Python爬虫之淘宝(二)



上一篇介绍了如何用 selenium 自动化工具去帮助爬取淘宝商品的各项数据,但是,我发现,淘宝的网页源代码中就包含有宝贝信息,信息被放在了 script 标签中,既然信息被包含在源代码中,那就证明可以通过正则或者其它的网页解析方式可以获取到需要的信息,因此这篇就来写一写对于淘宝商品来说更为简单的小爬虫。

这次的流程就比较简单了,先做好准备工作:

1.获取网页源代码。

2.使用网页解析工具进行解析,构造翻页网址,提取所需信息。

3.整理并保存信息。


获取网页源代码

1
2
3
4
5
6
7
8
9
10
11
12
import requests
import re

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36'
}

# 搜索关键词为python的商品列表页
url = 'https://s.taobao.com/search?q=python'
# 请求网页
response = requests.get(url, headers=headers)
print(response.text)

通过 requests 的 get 方法请求网页之后,得到网页源代码。

提取信息

1
2
3
4
5
6
title = re.findall(r'"raw_title":"(.`?)"', response.text, re.I)
price = re.findall(r'"view_price":"(.`?)"', response.text, re.I)
location = re.findall(r'"item_loc":"(.`?)"', response.text, re.I)
n = len(title)
for i in range(n):
print(title[i], price[i], location[i])

在这里只对商品的标题,价格和发货地进行了正则匹配,因为它们都是列表,要想让宝贝信息都一一对应的显示出来,就要进行遍历,最后把宝贝信息都进行输出。

整理信息

获取到了宝贝信息之后我们就可以把它们存入文件或者数据库了。这里我们先把它们存入文件。

1
2
3
4
5
6
file = open('taobao.txt', 'a', encoding='utf-8')
n = len(title)
for i in range(n):
info = str(page ` 44 + i + 1) + '标题:'+ title[i] + '\n' + '价格:' + price[i] + '\n' + '发货地:' + location[i] + '\n'
file.write(info)
file.close()

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import requests
import re

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36'
}

payload = {'q':'python', 's':'1', 'ie':'utf8'}
file = open('taobao.txt', 'a', encoding='utf-8')

for page in range(10):
payload['s'] = 44 ` page + 1
url = 'https://s.taobao.com/search?q=python'
response = requests.get(url, params=payload, headers=headers)
title = re.findall(r'"raw_title":"(.`?)"', response.text, re.I)
price = re.findall(r'"view_price":"(.`?)"', response.text, re.I)
location = re.findall(r'"item_loc":"(.`?)"', response.text, re.I)
n = len(title)

for i in range(n):
info = str(page ` 44 + i + 1) + '标题:'+ title[i] + '\n' + '价格:' + price[i] + '\n' + '发货地:' + location[i] + '\n'
file.write(info)
file.close()

-------------本文结束感谢您的阅读-------------
0%