首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓取登录imdb

抓取登录imdb
EN

Stack Overflow用户
提问于 2020-05-05 03:54:46
回答 1查看 111关注 0票数 0

我有一个scrapy代码,查找与给定标题相关的列表,然后从每个列表的第一页下载其他标题评级。它工作得很好。

然而,

有没有可能我可以让这个代码用我的imdb登录登录,然后从这些列表中下载我自己的评级?

代码如下:

代码语言:javascript
复制
class lisTopSpider(scrapy.Spider):
    name= 'ImdbListsSpider'
    allowed_domains = ['imdb.com']
    titleLinkNum = 'tt0120852'
    start_urls = [
        'https://www.imdb.com/lists/'+titleLinkNum
    ]
    # def ???(self, response):
    #     return scrapy.FormRequest.from_response(
    #         formdata={"username": "example@gmail.com","password":"example",}
    #         callback=self.parse)

    #lists related to given title
    def parse(self, response):
        listsLinks = response.xpath('//div[2]/strong')
        for link in listsLinks:
            list_url = response.urljoin(link.xpath('.//a/@href').get())
            yield scrapy.Request(list_url, callback=self.parse_list, meta={'list_url': list_url})

        next_page_url = response.xpath('//a[@class="flat-button next-page "]/@href').get()
        if next_page_url is not None:
            next_page_url = response.urljoin(next_page_url)
        yield scrapy.Request(next_page_url, callback=self.parse)            

    #Link of each list
    def parse_list(self, response):
        list_url = response.meta['list_url']
        myRatings = response.xpath('//div[@class="ipl-rating-star small"]/span[2]/text()').getall()

        yield{
            'list': list_url,
            'ratings': myRatings,
        }
EN

回答 1

Stack Overflow用户

发布于 2020-05-06 15:18:56

很可能你想要的是def start_requests,它允许你,而不是Scrapy,组成开始抓取的初始Request对象。他们的示例与您的伪代码或多或少都是一致的

或者,您可以不使用FormRequest提交凭据,而是通过浏览器单独登录,获取身份验证cookies,并通过start_requests提供这些cookies,以防在登录时出现任何奇怪的东西(例如reCaptcha、双因素身份验证等):

代码语言:javascript
复制
def start_requests(self):
    return Request(self.start_urls[0],
                   cookies={'whatever-cookie': 'whatever-value'})

并确保您的爬虫的settings.py中有COOKIES_ENABLED

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

https://stackoverflow.com/questions/61600492

复制
相关文章

相似问题

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