什么星网站做调查问卷的wordpress cms
news/
2025/9/23 13:17:01/
文章来源:
什么星网站做调查问卷的,wordpress cms,精品网站建设电话,外贸网站建设的重要性目的#xff1a;学习笔记2.首先我们试着爬取下来一篇文章的评论#xff0c;通过搜索发现在 response里面我们并没有匹配到评论#xff0c;说明评论是动态加载的。3.此时我们清空请求#xff0c;收起评论#xff0c;再次打开评论
4.完成上面操作后#xff0c;我们选择XHR学习笔记2.首先我们试着爬取下来一篇文章的评论通过搜索发现在 response里面我们并没有匹配到评论说明评论是动态加载的。3.此时我们清空请求收起评论再次打开评论
4.完成上面操作后我们选择XHR可以发现点击评论的时候发送了3个请求。
5.我们点击带comments的请求然后在response里搜索可以匹配到评论返回的是json数据说明评论请求是这条没错了请求链接在上图现在咱先不管请求链接的组合规则是什么继续往下
6.接下来 打开json.cn复制response里的json数据粘贴进去7。分析json数据一个object包含一条评论的所有信息比如评论人评论内容等等我们需要写代码从里面把相关的信息搞出来。8.现在我们知道了请求链接urlhttps://www.zhihu.com/api/v4/articles/258812959/root_comments?ordernormallimit20offset20statusopen
请求方式为request
可以开始写代码获取相关信息了
代码
import requests
import json
url https://www.zhihu.com/api/v4/articles/258812959/root_comments?ordernormallimit20offset20statusopen
Headers {
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36,
referer: https://www.zhihu.com/
}
resrequests.get(url,headersHeaders).content.decode(utf-8)
jsonfilejson.loads(res)
next_pagejsonfile[paging][is_end]
print(next_page)
for data in jsonfile[data]:
iddata[id]
contentdata[content]
authordata[author][member][name]
print(id,content,author)
打印效果9.至此我们打印了知乎上面第一页第一个话题第一页评论下面我们来思考怎么抓取该话题的所有评论。
10.我们点击第二页 获取到请求urlhttps://www.zhihu.com/api/v4/answers/1307614528/root_comments?ordernormallimit20offset20statusopen
对比第一页的url1https://www.zhihu.com/api/v4/answers/1307614528/root_comments?ordernormallimit20offset0statusopen
可以发先offset由0变成了20继续分析后面页面可得每过一页offset便加20。
那么一直加20什么时候会是个头呢这时我们翻到最后一页分析最后一页的json数据发现
is_end的值为Ture所以我们可以用一个while循环当is_endTure时 break掉就行11.代码
import requests
import json
from lxml import etree
import re
i0
while True:
urlhttps://www.zhihu.com/api/v4/articles/258812959/root_comments?ordernormallimit20offset{}statusopen.format(i)
i20
Headers {
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36,
referer: https://www.zhihu.com/
}
res requests.get(urlurl, headersHeaders).content.decode(utf-8)
jsonfilejson.loads(res)
next_pagejsonfile[paging][is_end]
print(next_page)
comp re.compile(?\w[^]*)
for data in jsonfile[data]:
contentcomp.sub(,data[content])
authordata[author][member][name]
print(昵称---author,评论:content)
if next_pageTrue:
break
通过分析可以看出只有前面那串数字不一样于是可以得出前面那串数字是控制不同话题的
13.接下来我们从话题来找关联发先能在response里面匹配到信息于是我打算动手直接写代码把相关信息提前出来代码
import requests,json
from lxml import etree
Headers {
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36,
cookie: _zap3935ec64-2d91-4666-903c-a641b2510b18; d_c0AOBcn_xhAxKPToowOy9HNL3DgDozDHDt63I|1602244658; capsion_ticket2|1:0|10:1604449780|14:capsion_ticket|44:YjAwODdlMjcxNzY4NGYwODlmNjgxMzYyNWFkZDJlYTI|6312ca79725710f1810a97a1fe3c4bbd6d16d02f769891626a67124cba7dd1f9; z_c02|1:0|10:1604449808|4:z_c0|92:Mi4xVnlXQUNBQUFBQUFBNEZ5Zl9HRURFaVlBQUFCZ0FsVk5FRVNQWUFDOUlsV1pKa2hZUTdvc1U5Z1cxbTluajk5UW5n|dc09f94f0b3e78d3d80f6d18da39109a38b3357154e275642bec5e4afa4c825b; tstr; q_c1097e8b52467b4017a4f27f26dd8622c2|1604625864000|1604625864000; _xsrf88ef577a-c34c-49a1-8a13-faf8cd85c55a; KLBRSID4843ceb2c0de43091e0ff7c22eadca8c|1605003647|1604996383,
referer: https://www.zhihu.com/
}
url1https://www.zhihu.com/
resrequests.get(url1,headersHeaders).text
htmletree.HTML(res)
divs html.xpath(//div[classCard TopstoryItem TopstoryItem--old TopstoryItem-isRecommend])
for div in divs:
titlediv.xpath(.//h2//a[target_blank]/text())[0]
linkdiv.xpath(.//h2//a[target_blank]/href)[0]
link_numlink.split(/)[-1]
print(link_num)
运行结果:14.如上面结果可以发现link_num刚好是可以控制话题滴。
于是开始写代码
import requests,json
from lxml import etree
headers {
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36,
cookie: _zap3935ec64-2d91-4666-903c-a641b2510b18; d_c0AOBcn_xhAxKPToowOy9HNL3DgDozDHDt63I|1602244658; capsion_ticket2|1:0|10:1604449780|14:capsion_ticket|44:YjAwODdlMjcxNzY4NGYwODlmNjgxMzYyNWFkZDJlYTI|6312ca79725710f1810a97a1fe3c4bbd6d16d02f769891626a67124cba7dd1f9; z_c02|1:0|10:1604449808|4:z_c0|92:Mi4xVnlXQUNBQUFBQUFBNEZ5Zl9HRURFaVlBQUFCZ0FsVk5FRVNQWUFDOUlsV1pKa2hZUTdvc1U5Z1cxbTluajk5UW5n|dc09f94f0b3e78d3d80f6d18da39109a38b3357154e275642bec5e4afa4c825b; tstr; q_c1097e8b52467b4017a4f27f26dd8622c2|1604625864000|1604625864000; _xsrf88ef577a-c34c-49a1-8a13-faf8cd85c55a; KLBRSID4843ceb2c0de43091e0ff7c22eadca8c|1605003647|1604996383,
referer: https://www.zhihu.com/
}
url1https://www.zhihu.com/
resrequests.get(url1,headersheaders).text
htmletree.HTML(res)
divs html.xpath(//div[classCard TopstoryItem TopstoryItem--old TopstoryItem-isRecommend])
for div in divs:
titlediv.xpath(.//h2//a[target_blank]/text())[0]
linkdiv.xpath(.//h2//a[target_blank]/href)[0]
link_numlink.split(/)[-1]
i0
print(f.........................................标题为{title} ...........................................................)
while True:
url2https://www.zhihu.com/api/v4/answers/{}/root_comments?ordernormallimit20offset{}statusopen.format(link_num,i)
i 20
print(f正在打印第{i / 20}页。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。)
res requests.get(url2, headersheaders).content.decode(utf-8)
jsonfile json.loads(res)
next_page jsonfile[paging][is_end]
# print(next_page)
for data in jsonfile[data]:
id data[id]
content data[content]
author data[author][member][name]
print(f{author}评价{content})
if next_page True:
break
运行结果截图至此完成了第一页全话题 全评论的爬取.
写道这里发现知乎的话题也是动态加载的并不需要翻页很多数据都是通过json传入而且需要传入cookie才可以进行爬取
最后代码写的不够完善至少加强自己对爬虫的理解有些地方需添加异常处理的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912656.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!