【问题标题】:xpath and scrapy in python 3.6 does not workpython 3.6中的xpath和scrapy不起作用
【发布时间】:2018-07-21 07:29:09
【问题描述】:

我正在尝试使这段代码正常工作,以便我可以从以下网站上抓取表格的某些列:http://www.chiptiming.com.br/resultados/detalhes/2213609473

为了工作,我一直在尝试修改很多东西,但没有成功,谁能告诉我我做错了什么?我也放了日志。提前致谢。

ps:我看了很多类似的帖子,但我找不到原因,如果这个帖子有点重复,对不起。

from scrapy import Spider
from scrapy.selector import Selector

from stack.items import StackItem

class StackSpider(Spider):
    name = "stack"
    allowed_domains = ["chiptiming.com.br"]
    start_urls = 
         ['http://www.chiptiming.com.br/resultados/detalhes/2213609473',]

def parse(self, response):
    products = response.xpath('//*[@id="uptPnlResultGrid"]/div/table//tr')
    # ignore the table header row
    for product in products[1:]:
        item = StackItem()
        item['Coloc'] = product.xpath('td[1]//text()').extract_first()
        item['NumPeito'] = product.xpath('td[2]//text()').extract_first()
        item['Nome'] = product.xpath('td[3]//text()').extract_first()
        yield item

D:\Python\stack>python -m scrapy 抓取堆栈 -o items_corrida.json -t json 2018-02-10 16:19:04 [scrapy.utils.log] 信息:Scrapy 1.5.0 开始 (机器人:堆栈)2018-02-10 16:19:04 [scrapy.utils.log] 信息:版本: lxml 4.1.0.0,libxml2 2.9.4,cssselect 1.0.3,解析 1.4.0,w3lib 1.19.0、Twisted 17.9.0、Python 3.6.3 |Anaconda, Inc.| (默认,2017 年 10 月 15 日,03:27:45)[MSC v.1900 64 位(AMD64)],pyOpenSSL 17.2.0(OpenSSL 1.0.2l 2017 年 5 月 25 日),密码学 2.0.3,平台 Windows-10-10.0.16299-SP0 2018-02-10 16:19:04 [scrapy.crawler] 信息: 覆盖设置:{'BOT_NAME': 'stack', 'FEED_FORMAT': 'json', 'FEED_URI':'items_corrida.json','NEWSPIDER_MODULE':'stack.spiders', 'ROBOTSTXT_OBEY':真,'SPIDER_MODULES':['stack.spiders']} 2018-02-10 16:19:04 [scrapy.middleware] 信息:启用扩展: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.feedexport.FeedExporter', 'scrapy.extensions.logstats.LogStats'] 2018-02-10 16:19:04 [scrapy.middleware] 信息:已启用下载器中间件: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2018-02-10 16:19:04 [scrapy.middleware] 信息:启用蜘蛛中间件: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2018-02-10 16:19:04 [scrapy.middleware] INFO:启用项目管道:[] 2018-02-10 16:19:04 [scrapy.core.engine] 信息:Spider 于 2018-02-10 16:19:04 打开 [scrapy.extensions.logstats] 信息:抓取 0 页(以 0 页/分钟), 刮掉 0 件(以 0 件/分钟计算) 2018-02-10 16:19:04 [scrapy.extensions.telnet] 调试:Telnet 控制台正在监听 127.0.0.1:6024 2018-02-10 16:19:04 [scrapy.downloadermiddlewares.redirect] 调试:重定向(302)到 http://www.chiptiming.com.br/404.aspx> 来自 http://www.chiptiming.com.br/robots.txt> 2018-02-10 16:19:04 [scrapy.core.engine] DEBUG: 爬取(200) http://www.chiptiming.com.br/404.aspx> (referer: None) 2018-02-10 16:19:04 [scrapy.core.engine] 调试:已爬取 (200) http://www.chiptiming.com.br/resultados/detalhes/2213609473>(参考: 无)2018-02-10 16:19:04 [scrapy.core.engine] 信息:关闭蜘蛛 (完成) 2018-02-10 16:19:04 [scrapy.statscollectors] INFO: 倾销 Scrapy stats: {'downloader/request_bytes': 880, 'downloader/request_count': 3, 'downloader/request_method_count/GET': 3,'downloader/response_bytes':17534,'downloader/response_count': 3, 'downloader/response_status_count/200': 2, 'downloader/response_status_count/302': 1, 'finish_reason': “完成”,“完成时间”: datetime.datetime(2018, 2, 10, 18, 19, 4, 768123), 'log_count/DEBUG': 4, 'log_count/INFO': 7, 'response_received_count':2,'调度程序/出队':1, “调度程序/出队/内存”:1,“调度程序/入队”:1, '调度程序/排队/内存':1,'start_time':datetime.datetime(2018, 2、10、18、19、4、319337)} 2018-02-10 16:19:04 [scrapy.core.engine] 信息:蜘蛛关闭(完成)

【问题讨论】:

  • 请提供所需的输出以及您目前得到的结果
  • 源 HTML 代码中没有您想要的信息(您可以在浏览器中使用Ctrl+U 进行检查)。它是通过 AJAX 调用加载的(POSTchiptiming.com.br/resultados/detalhes/2213609473
  • 有没有办法从页面中获取这些信息?

标签: python web-scraping scrapy


【解决方案1】:

我尝试了您的代码,但从这一行中只得到了一个空产品:

products = response.xpath('//*[@id="uptPnlResultGrid"]/div/table//tr')

我认为是动态网站,试试splash。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多