大佬教程收集整理的这篇文章主要介绍了拿爱奇艺练手Python爬虫,是在法律边缘试探吗?爬虫技巧学习,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_675_19@
这里首先用到的第一个技巧是c;通过某一评论内容c;检索接口可能出现的位置。 @H_874_5@在开发者工具标题栏按下Ctrl+F
键c;唤醒搜索窗口c;如下图所示: headers
部分c;此时就得到了数据返回接口。 https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&agent_version=9.11.5&authcookie=null&business_type=17&chAnnel_id=2&content_id=6341622380665900&hot_size=0&last_id=8268424748618621&page=&page_size=20&types=time&callBACk=jsonp_1634731681416_32977
https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&agent_version=9.11.5&authcookie=null&business_type=17&chAnnel_id=2&content_id=6341622380665900&hot_size=0&last_id=5385440691984721&page=&page_size=20&types=time&callBACk=jsonp_1634731930864_62806
@H_874_5@复制 2 个进行比对就可以c;对比完成c;在将得到的结论应用到第 3 个地址。
@H_874_5@接口地址:https://sns-comment.iqiyi.com/v3/comment/get_comments.action
agent_type
:未知c;保持默认 118 ;agent_version
:未知c;保持默认 9.11.5 ;authcookie
:未知c;保持 null;business_type
:未知c;保持 17;chAnnel_id
:未知c;保持 2;content_id
:未知c;保持 6341622380665900;hot_size
:未知c;保持 0;last_id
:有变化c;猜测与评论的 ID 有关;page
:页码c;没有变化;page_size
:每页数据量c;默认 20;types
:未知c;保持默认;callBACk
:回到函数c;用于 JS。(基于经验的结论)https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&agent_version=9.11.5&authcookie=null&business_type=17&chAnnel_id=2&content_id=6341622380665900&hot_size=0&last_id=5385440691984721&page=&page_size=20&types=time&callBACk=jsonp_1634731705450_53631
@H_874_5@接下来的一步是尝试去除部分参数c;查看返回数据是否有变化。
@H_874_5@最后得到的精简接口地址为:
https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&business_type=17&content_id=6341622380665900&last_id=5385440691984721
@H_874_5@这里如果你有编写爬虫的经验c;可以知道@H_874_5@当last_id
参数是上一接口返回的最后一条数据 ID 如果没有相关经验c;依然使用开发者工具的检索功能c;查询last_id
值即可。
last_id
为空时数据返回第一页数据。
scrapy
采集就变得非常简单了c;代码如下:
import json
import scrapy
class IqySpider(scrapy.Spider):
name = 'iqy'
allowed_domains = ['sns-comment.iqiyi.com']
start_urls = [
'https://sns-comment.iqiyi.com/v3/comment/get_comments.action?agent_type=118&business_type=17&content_id=6341622380665900&last_id=']
def parse(self, response):
html = response.body
json_data = json.loads(html)
yield json_data
if json_data is not None:
ret = json_data['data']
comments = ret['comments']
_id = comments[-1]['id']
next = self.start_urls[0] + str(_id)
# 下一接口
yield scrapy.request(url=next)
else:
return None
@H_874_5@请重点查看 parse
方法c;首先返回的是 json_data
c;即接口返回数据的 JSON 对象c;然后直接获取最后一条数据的 IDc;拼接成下一页请求地址c;从而实现循环采集。
@H_874_5@使用下述命令运行爬虫程序:
scrapy crawl iqy -o comments.json -s CLOSESPIDER_ITEMCOUNT=10
-o comments.json
:保存为 JSON 格式文件;-s CLOSESPIDER_ITEMCOUNT=10
:设置爬取多少个 item
之后关闭。UTF-8
编码c;使用如下命令即可。
scrapy crawl iqy -o comments.json -s CLOSESPIDER_ITEMCOUNT=10 -s FEED_EXPORT_ENCODING=UTF-8
@H_874_5@setTings.py
文件中进行设置。
@H_874_5@@H_874_5@以上代码就是本篇博客的全部内容啦。
@H_874_5@今天是持续写作的第 250 / 365 天。 期待 关注c;点赞、评论、收藏。@H_874_5@更多精彩 @H_874_5@《爬虫 100 例c;专栏销售中c;买完就能学会系列专栏》
以上是大佬教程为你收集整理的拿爱奇艺练手Python爬虫,是在法律边缘试探吗?爬虫技巧学习全部内容,希望文章能够帮你解决拿爱奇艺练手Python爬虫,是在法律边缘试探吗?爬虫技巧学习所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。