爬虫Day2-正则学习与实践
参加了datawhale活动,顺便记录下学习内容
思维导图
实践部分
爬去天猫的商品信息(名称和价格)
总体分为三步骤:
-
获取 html 文本 get_html_text(url, data):
def get_html_text(url, data): try: headers = { 'cookie': '这个太长了,不复制进来了', 'user-agent': 'Mozilla/5.0' } response = requests.get(url, timeout=30, headers=headers, params=data) print("status_code", response.status_code) response.raise_for_status() response.encoding = response.apparent_encoding return response.text except: print("爬取失败")
-
解析 html 文本内容,提取出有用的信息 parse_html(text):
def parse_html(text): try: price_list = re.findall(r'"view_price":"(.*?)"', html) name_list = re.findall(r'"raw_title":"(.*?)"', html) ans = [] for i in range(len(price_list)): price = eval(price_list[i]) ans.append([name_list[i], price]) return ans except: print("解析失败")
-
打印结果 print_commodity(comodity_list)
def print_commodity(comodity_list): msg = "{0:^3} {1:^6} {2:^10}" for index, item in enumerate(comodity_list): print(msg.format(index, item[0], item[1]))
-
最后的调用阶段
goods_name = "书包" # 搜索商品类型 start_url = "https://s.taobao.com/search" data = { 'p':goods_name, 's': 0 } info_list = [] page = 3 for i in range(page): data['s'] = 44 * i html = get_html_text(start_url, data) info_list.extend(parse_html(html)) print_commodity(info_list)
结果
0 【酷睿+指纹解锁】2020款全新15.6英寸i3笔记本电脑游戏本超薄手提电脑学生办公用商务轻薄便携粉色女生款 2178.0 1 法琪莎豆豆鞋女平底2020新款浅口休闲方扣款百搭软底单鞋休闲女鞋 139.9 2 蝴蝶结单鞋女2020春季新款平底鞋百搭豆豆鞋仙女风晚晚浅口奶奶鞋 29.8 3 单鞋女软底平底铆钉女鞋子2020春夏季新款韩版百搭豆豆鞋奶奶鞋潮 38.8 4 单鞋女2020新款春季平底浅口玛丽珍复古奶奶鞋一脚蹬鞋子豆豆鞋女 24.9 5 网红一脚蹬大头豆豆鞋女英伦风2020春季潮鞋新款百搭水钻平底单鞋 45.8 6 蝴蝶结单鞋女春秋百搭低跟方头奶奶鞋平底软底豆豆鞋晚晚风温柔鞋 29.8 7 联想 小新14 青春版 商务办公超轻薄便携游戏笔记本电脑学生女 2399.0 8 联想小新潮7000 独显笔记本电脑轻薄便携学生女生款超薄商务办公用手提15青春版2020官方旗舰店正品小新air14 2799.0 .....