使用Scrapy进行Web数据抓取

时间:2017-06-06 19:39:58

标签: python web-scraping scrapy web-crawler scrapy-spider

我正在使用scrapy来刮擦justdial.com但代码似乎不起作用。请帮我解决这个问题。我从终端运行命令为“scrapy crawl justdial -o items.csv -t csv”。

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from justdial_sample.items import JustdialSampleItem

class MySpider(CrawlSpider):
    name = "justdial"
    allowed_domains = ["www.justdial.com"]
    start_urls = ["https://www.justdial.com/"]

    rules = (Rule (SgmlLinkExtractor(allow=("index\d00\.html",
    ),restrict_xpaths=('//p[@id="nextpage"]',))
    , callback="parse_items", follow=True),
    )  

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        titles = hxs.select("//p")
        items = []
        for titles in titles:
            item = JdItem()
            item ["title"] = titles.select("a/text()").extract()
            item ["link"] = titles.select("@/href").extract()
            item.append(item)
        return items

这是我使用的代码。

1 个答案:

答案 0 :(得分:0)

如果您可以显示输出日志,则可以更轻松地为您提供帮助。

通常您应该在浏览器等User-Agent中添加正确的标头。您可以检查firebug中的所有标题,然后检查蜘蛛中的标题。

print response.request.headers

更新: 您应该将此行添加到settings.py

USER_AGENT = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/53.0'