Python 1-2

注意事项

  • 正则表达式
  • 获取列表长度
  • 字符集问题
from bs4 import BeautifulSoup
import re

html_file = '/Users/XXX/muggle/Plan-for-combating/week1/1_2/1_2answer_of_homework/index.html'

# 使用with open语法打开文件
# 第一个参数是文件地址;第二个参数是文件处理方式:r表示读取文件;w表示写文件
# 添加encoding指定字符集,避免乱码问题
with open(html_file,'r',encoding='utf-8') as web_data:
    content = web_data.read()
    soup = BeautifulSoup(content, 'lxml')

    titles = soup.select("body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a")
    images = soup.select("body > div > div > div.col-md-9 > div > div > div > img")
    reviews = soup.select("body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right")
    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)')

for title, image, price, star, review in zip(titles, images, prices, stars, reviews):
    data = {
        'title': title.get_text(),
        'image': image.get('src'),
        'price': price.get_text(),
        # 通过len函数获取列表长度
        'star' : len(star.find_all('span', class_="glyphicon glyphicon-star")),
        # 通知正则表达式获取数字
        'review': int(re.search(r'\d*', review.get_text()).group())
    }
    print(data)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 转化操作: RDD的转化操作是返回新的RDD的操作。转化出来的RDD是惰性求值的,只有在行动操作中用到时才会被计算...
    大尾巴狼呀阅读 3,704评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,455评论 0 4
  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 9,503评论 0 20
  • 今天现在没事,那么我就谈谈打工和经商哪个好 今天早上7点45分开始上班了,下午4点45下班了,很...
    你好别后退阅读 2,338评论 0 0