【问题标题】:Scrapy crawler doesnt work with a website i get partial resultsScrapy 爬虫不适用于网站我得到部分结果
【发布时间】:2016-08-21 18:34:26
【问题描述】:

我是 Scrapy 和 Python 的新手。我一直在努力从 2 个网站中提取数据,如果我直接使用 python 进行提取,它们的效果会非常好。我已调查并想抓取这些网站:

  1. homedepot.com.mx/comprar/es/miguel-aleman/home(完美运行)
  2. vallenproveedora.com.mx/(不起作用)

谁能告诉我如何使第二个链接工作?

我看到这条消息:

DEBUG: Crawled (200) allenproveedora.com.mx/> (referer: None) ['partial']

但我不知道如何解决。

我将不胜感激任何帮助和支持。这是代码和日志:

items.py

from scrapy.item import Item, Field

class CraigslistSampleItem(Item):
    title = Field()
    link = Field()

Test.py(蜘蛛文件夹)

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from craigslist_sample.items import CraigslistSampleItem

class MySpider(BaseSpider):
    name = "craig"
    allowed_domains = ["vallenproveedora.com.mx"]
    #start_urls = ["http://www.homedepot.com.mx/webapp/wcs/stores/servlet/SearchDisplay?searchTermScope=&filterTerm=&orderBy=&maxPrice=&showResultsPage=true&langId=-5&beginIndex=0&sType=SimpleSearch&pageSize=&manufacturer=&resultCatEntryType=2&catalogId=10052&pageView=table&minPrice=&urlLangId=-5&storeId=13344&searchTerm=guante"]
    start_urls = ["http://www.vallenproveedora.com.mx/"]
    def parse(self, response):
        titles = response.xpath('//ul/li')
        for titles in titles:
            title = titles.select("a/text()").extract()
            link = titles.select("a/@href").extract()
            print (title, link)

【问题讨论】:

    标签: python scrapy web-crawler partial


    【解决方案1】:

    您在日志中看到 ['partial'] 是因为 vallenproveedora.com.mx 上的服务器未在其响应中设置 Content-Length 标头;运行curl -I 亲自查看。有关partial 标志原因的更多详细信息,请参阅my answer here

    但是,您实际上不必担心这一点。响应体就在那里,Scrapy 会解析它。您真正遇到的问题是 XPath //ul/li/a 没有选择任何元素。您应该查看页面源并相应地修改您的选择器。我建议为每个站点编写一个特定的爬虫,因为站点通常需要不同的选择器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 2019-06-24
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多