首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在booking.com上使用scrapy而不被阻止?

如何在booking.com上使用scrapy而不被阻止?
EN

Stack Overflow用户
提问于 2021-03-07 03:22:31
回答 1查看 213关注 0票数 1

我正在尝试用python插件scrapy从booking.com上抓取酒店评论。

我的问题是,scrapy无法找到所需的数据(例如负反馈)。我认为,这是因为网站中嵌入了javascript代码。

因此,我尝试在settings.py文件中更改我的用户代理,但没有任何更改。然后我尝试模拟一个浏览器请求,但我不确定我是否做得正确。

这是我想要删除评论的酒店的链接:https://www.booking.com/hotel/de/best-western-plus-marina-star-lindau.de.html

这是我的蜘蛛:

代码语言:javascript
复制
import scrapy


class FeedbacktestSpider(scrapy.Spider):
    name = 'feedbacktest'
    allowed_domains = ['www.booking.com/']
    start_urls = ['https://www.booking.com/hotel/de/best-western-plus-marina-star-lindau.de.html']

def start_requests(self):
    urls=['https://www.booking.com/hotel/de/best-western-plus-marina-star-lindau.de.html']
   
    headers = {
'Host': 'www.booking.com',
'Device-Memory': '8',
'DPR': '1',
'Viewport-Width': '1920',
'RTT': '50',
'Downlink': '10',
'ECT': '4g',
'Upgrade-Insecure-Requests': '1',
'DNT': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36 Edg/89.0.774.45',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Sec-Fetch-Site':'same-origin',
'Sec-Fetch-Mode':'navigate',
'Sec-Fetch-User':'?1',
'Sec-Fetch-Dest':'document',
'Referer':'https://www.booking.com/',
'Accept-Encoding':' gzip, deflate, br',
'Accept-Language':'de,de-DE;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Cookie':'__utma=12798129.959027148.1615055069.1615055069.1615055069.1; __utmc=12798129; __utmz=12798129.1615055069.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __utmt=1; __utmb=12798129.1.10.1615055069'
}
           
    for url in urls:
        yield scrapy.Request(url = url, callback = self.parse, headers=headers)

def parse(self, response):
    pos = response.xpath("//div[@class='althotelsDiv2 use_sprites_no_back featured_reviewer']/p/span/text()").extract()
    
    yield{
        'pos': pos
        }

对于settings.py中的用户代理,我尝试了我自己的用户代理和谷歌代理。

非常感谢您的帮助

EN

回答 1

Stack Overflow用户

发布于 2021-03-07 20:53:58

好了,我解决了这个问题:

我用我的网络工具查看了我想要抓取的站点,并在请求所需数据的地方查找请求。

然后我抓取这个链接,而不是原始的链接,在我的抓取的settings.py中,我设置了ROBOTSTXT_OBEY = False,这样我就不会被网站屏蔽。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66509758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档