Python实战计划学习笔记(二):爬取本地网页

第一周第二节作业

本地页面

Python实战计划学习笔记(二):爬取本地网页_第1张图片
2.png

爬取商品的图片地址、标题、价格、评分、评分人数

代码

from bs4 import BeautifulSoup

path = './1_2_homework_required/index.html'  #这里使用了相对路径,只要你本地有这个文件就能打开
with open(path, "r") as wb_data:
    # print(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')
    stars = soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p:nth-of-type(2)')
    rates = soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right')
    # 为了从父节点开始取,此处保留:nth-of-type(2),观察网页,多取几个星星的selector,就发现规律了

# print(titles,images,rates,prices,stars,sep='\\n--------\\n')

for title, image, price, star, rate in zip(titles, images, prices, stars, rates):  # 使用for循环,把每个元素装到字典中
    data = {
        'title': title.get_text(),
        'image': image.get('src'),
        'price': price.get_text(),
        'rate': rate.get_text(),
        'star': len(star.find_all("span", class_='glyphicon glyphicon-star'))
        # 观察发现,每一个星星会有一次,所以我们统计有多少次,就知道有多少个星星了;
        # 使用find_all 统计有几处是的样式,第一个参数定位标签名,第二个参数定位css 样式,具体可以参考BeautifulSoup 文档示例http://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/#find-all;
        # 由于find_all()返回的结果是列表,我们再使用len()方法去计算列表中的元素个数,也就是星星的数量
    }
    print(data)

总结

Beautifulsoup和lxml解析网页内容,用chorme浏览器的Copy CSS Selector获取目标位置
soup.select()返回的是一个列表
find_all()用来搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件.

你可能感兴趣的:(Python实战计划学习笔记(二):爬取本地网页)