小编tno*_*620的帖子

单击Scrapy-Splash中的显示按钮

我正在使用scrapy-splash抓取以下网页,http://www.starcitygames.com/buylist/,我必须先登录才能获取所需的数据。效果很好,但是为了获取数据,我需要单击显示按钮,这样我就可以抓取这些数据,直到单击该按钮,才能访问所需的数据。我已经得到了一个答案,告诉我不能简单地单击显示按钮并抓取显示的数据,并且我需要抓取与该信息关联的JSON网页,但是我担心抓取JSON会变成红色标记网站的所有者,因为大多数人没有打开JSON数据页面,而与计算机相比,需要花费几分钟的时间才能找到它,因此速度要快得多。所以我想我的问题是,是否仍要刮擦我的点击显示页面并从那里去,还是只能刮取JSON页面?这就是我到目前为止所得到的...

import scrapy
from ..items import NameItem

class LoginSpider(scrapy.Spider):
    name = "LoginSpider"
    start_urls = ["http://www.starcitygames.com/buylist/"]

    def parse(self, response):
        return scrapy.FormRequest.from_response(
        response,
        formcss='#existing_users form',
        formdata={'ex_usr_email': 'abc@example.com', 'ex_usr_pass': 'password'},
        callback=self.after_login
        )



    def after_login(self, response):
        item = NameItem()
        display_button = response.xpath('//a[contains(., "Display>>")]/@href').get()

        yield response.follow(display_button, self.parse)

        item["Name"] = response.css("div.bl-result-title::text").get()
        return item
Run Code Online (Sandbox Code Playgroud)

网站快照 HTML代码

python splash-screen scrapy web-scraping scrapy-splash

5
推荐指数
1
解决办法
298
查看次数

单击Scrapy-Splash中的按钮

我正在编写一个scrapy-splash程序,并且需要单击网页上的显示按钮(如下图所示),以便显示第10版的数据,因此可以对其进行抓取。我有下面尝试过的代码,但是没有用。我需要的信息只有在单击显示按钮后才能访问。 更新:仍然为此而苦苦挣扎,我必须相信有一种方法可以做到这一点。我不想刮JSON,因为这可能是网站所有者的一个危险信号。

import scrapy
from ..items import NameItem

class LoginSpider(scrapy.Spider):
    name = "LoginSpider"
    start_urls = ["http://www.starcitygames.com/buylist/"]

    def parse(self, response):

        return scrapy.FormRequest.from_response(
        response,
        formcss='#existing_users form',
        formdata={'ex_usr_email': 'email123@example.com', 'ex_usr_pass': 'password123'},
        callback=self.after_login
        )


    def after_login(self, response):
        item = NameItem()
        display_button= response.xpath('//a[contains(., "- Display>>")]/@href').get()
        response.follow(display_button, self.parse)
        item["Name"] = response.css("div.bl-result-title::text").get()
        return item
Run Code Online (Sandbox Code Playgroud)

网页快照 HTML代码

python scrapy scrapy-splash splash-js-render

3
推荐指数
1
解决办法
281
查看次数

尝试伪造和轮换用户代理

我正在尝试伪造用户代理并在 Python 中轮换它们。
我在网上找到了一个关于如何使用scrapy-useragents包使用 Scrapy 执行此操作的教程。
我抓取网页https://www.whatsmyua.info/,以检查我的用户代理,看看它是否与我的不同以及它是否旋转。它与我的实际用户代理不同吗,但它不会轮换,它每次都会返回相同的用户代理,而且我无法弄清楚出了什么问题。

设置.py

BOT_NAME = 'scrapy_javascript'

SPIDER_MODULES = ['scrapy_javascript.spiders']
NEWSPIDER_MODULE = 'scrapy_javascript.spiders'


# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'scrapy_javascript (+http://www.yourdomain.com)'

# Obey robots.txt rules
ROBOTSTXT_OBEY = True
DOWNLOADER_MIDDLEWARES = {
        'scrapy_splash.SplashCookiesMiddleware': 723,
        'scrapy_splash.SplashMiddleware': 725,
        'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}

# -----------------------------------------------------------------------------
# USER AGENT
# -----------------------------------------------------------------------------

DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
    'scrapy_useragents.downloadermiddlewares.useragents.UserAgentsMiddleware': 500,
}


USER_AGENTS = [
    ('Mozilla/5.0 (X11; Linux x86_64) '
     'AppleWebKit/537.36 (KHTML, like …
Run Code Online (Sandbox Code Playgroud)

python user-agent scrapy scrapy-splash splash-js-render

2
推荐指数
1
解决办法
9853
查看次数