大佬教程收集整理的这篇文章主要介绍了使用 Scrapy 不正确标记电影名称的 WebScraping 用户评论,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试通过网络抓取我拥有的 start_URL 列表。我能够抓取一个 URL,但是当我添加另一个 URL 时,它没有正确标记另一个 URL。我看不到它在循环中的哪个位置停止抓取第一个并跳到下一个而没有在此时完成。
所以基本上,我刮了一页,标签是完美的,我刮了下几页,标签(电影名称)开始变得不正确。我知道我目前在两个起始 url 之间来回切换的内容,但我不知道如何在不使脚本停止运行超出第一页的情况下实现这一点。
我正在寻找一种方法来调用电影名称,就像我在第一页上所做的那样,因为我在第一页上所做的方式不起作用,因此我想我可以诉诸于使用起始 URL 来识别审查。
感谢您查看任何建议或见解,因为我是 Scrapy 和开发人员工具的新手!
import scrapy
import re
import Json
import re
def generate_revIEw_url(movIE_ID,end_cursor,start_cursor=''):
return f'https://www.rottentomatoes.com/nAPI/movIE/{movIE_ID}'\
f'/revIEws/user?direction=next&'\
f'endcursor={end_cursor}&startcursor={start_cursor}'
class RevIEwsspIDer(scrapy.SpIDer):
name = 'revIEws'
allowed_domains = ['rottentomatoes.com']
start_urls = ['https://www.rottentomatoes.com/m/color_purple/revIEws?type=user','https://www.rottentomatoes.com/m/dumbo/revIEws?type=user',]
COUNT_MAX = 100
custom_setTings = {
'CLOSESPIDER_PageCount': COUNT_MAX
}
def parse(self,responsE):
tomatoes_scripts = response.xpath(
'//script[contains(text(),"function (root)")]/text()'
).get()
regex = r'root\.RottenTomatoes\.context\.movIERevIEw = (.*?);'
movIE_revIEw_data = re.findall(regex,tomatoes_scripts)[0]
movIE_revIEw_data_Dict = Json.loads(movIE_revIEw_data)
movIE_ID = movIE_revIEw_data_Dict.get('movIEID')
next_page = movIE_revIEw_data_Dict.get('pageInfo').get('hasNextPage')
end_cursor = movIE_revIEw_data_Dict.get('pageInfo').get('endcursor')
revIEws = response.xpath('//ul[@class="audIEnce-revIEws"]/li')
for revIEw in revIEws:
yIEld {
'revIEw': revIEw.xpath(
'.//p[contains(@class,"audIEnce-revIEws__revIEw")]/text()'
).get(),'movIEID': response.xpath(
'.//h2[contains(@class,"panel-heading")]/text()'
).get()
}
if next_page:
yIEld scrapy.request(
url=generate_revIEw_url(movIE_ID,end_cursor),callBACk=self.parse_special_response,Meta={'movIE_ID': movIE_ID}
)
def parse_special_response(self,responsE):
response_Dict = Json.loads(response.body)
revIEws = response_Dict.get('revIEws')
for revIEw in revIEws:
yIEld {
'revIEw': revIEw.get('revIEw'),'movIEID':MOVIename REFERENCE HERE
}
movIE_ID = response.Meta.get('movIE_ID')
next_page = response_Dict.get('pageInfo').get('hasNextPage')
end_cursor = response_Dict.get('pageInfo').get('endcursor')
start_cursor = response_Dict.get('pageInfo').get('startcursor')
if next_page:
yIEld scrapy.request(
url=generate_revIEw_url(movIE_ID,start_cursor),Meta={'movIE_ID': movIE_ID}
)
def start_requests(self):
for url in self.start_urls:
yIEld scrapy.request(url=url,callBACk=self.parse,dont_filter=TruE)
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的使用 Scrapy 不正确标记电影名称的 WebScraping 用户评论全部内容,希望文章能够帮你解决使用 Scrapy 不正确标记电影名称的 WebScraping 用户评论所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。