Python网络爬虫所需要的模块
本次爬虫程序需要的模块有:request、urllib、json
以下先来分别介绍这几个模块的用处
request模块
利用request(requests)模块我们可以获取所要爬取网页的html内容。使用request可以返回对应网页的连接,在调用.text或者.content来获取对应的网页html内容。其中.text是以字符串的格式返回网页内容,.content是以二进制字节的形式反回网页内容,两者有不同的用处。例如有些以.text返回的网页内容会出现编码格式不对导致的乱码问题等。
————————————————
json模块
使用json是为了将对爬取下来的评论网页解析成Python方便处理的字典格式,json有.load()和.loads(),dump()和dumps()。loads()是将json格式转换成Python方便处理的字典格式。而dumps()方法是将Python的字典格式转换成json格式。
————————————————
# __author: han-zhang
# date: 2019/8/16 18:02
import urllib.request
import json, jsonpath
start_page = int(input('start_page:'))
end_page = int(input('end_page:'))
for p in range(start_page, end_page + 1):
url = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv995&productId=1981570&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1'
url = url.format(p)
#仿造请求头,骗过浏览器
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
'Referer': 'https://item.jd.com/1981570.html'
}
#发起请求
request = urllib.request.Request(url=url, headers=headers)
#得到响应
content = urllib.request.urlopen(request).read().decode('gbk')
#去掉多余得到json格式
content = content.strip('fetchJSON_comment98vv995();')
# print(content)
obj = json.loads(content)
comments = obj['comments']
# print(comments)
fp = open('jingdong.txt', 'a', encoding='gbk')
for comment in comments:
# print(comment)
name = comment['referenceName']
id = comment['id']
con = comment['content']
time = comment['creationTime']
img_url = comment['userImageUrl']
item = {
'name': name,
'id': id,
'con': con,
'time': time,
'img_url': img_url,
}
string = str(item)
fp.write(string + '\n')
fp.close()
print('%s-page---finish' % p)