美文网首页
作业:1.2

作业:1.2

作者: 云清尧 | 来源:发表于2016-07-01 10:19 被阅读0次

    <h2>代码</h2>
    <pre>
    from bs4 import BeautifulSoup

    with open('./index.html','r') as wb_data:
    soup = BeautifulSoup(wb_data,'lxml')
    images = soup.select('body > div > div > div.col-md-9 > div > div > div > img')
    titles = soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a')
    prices = soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4.pull-right')
    reviews = soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right')
    stars = soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p > span')
    #stars = soup.find_all('span',class_='glyphicon-star')
    print(stars)
    print(images,titles,prices,reviews,stars,sep='\n--------------------\n')
    print(len(stars),len(images))
    for image,title,price,review,star in zip(images,titles,prices,reviews,stars):

    data = {
        'image':image.get('src'),
        'title':title.get_text(),
        'price':price.get_text(),
        'review':review.get_text(),
        'star':len(star),
    }
    print(data)
    

    </pre>
    <h2>成果</h2>

    Paste_Image.png

    <h2>总结</h2>
    改作业的主要目标是爬取一个本地网页中的相关信息。
    主要的步骤有:
    1.加载这个本地网页。这里用到了with open(还不太懂!)
    2.利用BeautifulSoup解析这个网页的内容
    3.利用浏览器的“检查”功能,定位要爬取数据的标签并加以整理
    4.提取这些信息并利用for循环整理到字典中,并打印出来

    <h2>反思</h2>
    本次作业主要有两个问题:
    1.对于with这个语法还不了解。
    2.要爬取的数据中,星级比较难以处理,在网页文件中,几颗星是这样表示的:
    <pre>
    class="glyphicon glyphicon-star"
    class="glyphicon glyphicon-star-empty" #共有5条这样的语句,有几个无“empty”就代表几颗星。
    </pre>
    老师给出的方法是:
    <pre>
    stars = soup.select("body > div > div > div.col-md-9 > div > div > div > div.ratings > p > span")
    stars_count = len(star)
    "star": stars_count
    </pre>
    但结果是,字典中的star都是0。我认为循环没有将每一个商品的星级给提取出来。stars包括了所有的星级,然后len对其计数。目前我还没有找到合适的解决办法。
    我尝试使用find_all来提取数据,能够做到只提取class="glyphicon glyphicon-star" 。但是并没有用。
    <pre>
    stars = soup.find_all('span',class_='glyphicon-star')
    </pre>
    不过也算是Get了一个新知识点吧。

    相关文章

      网友评论

          本文标题:作业:1.2

          本文链接:https://www.haomeiwen.com/subject/qdxtjttx.html