相关疑难解决方法(0)

scrapy中的动态start_urls

我正在使用scrapy来抓取网站上的多个页面.该变量start_urls用于定义要爬网的页面.我最初会从第一页开始,因此start_urls = [1st page]在文件中定义example_spider.py

从第一页获得更多信息后,我将确定要抓取的下一页是什么,然后start_urls相应地进行分配.因此,我必须覆盖上面的example_spider.py并进行更改start_urls = [1st page, 2nd page, ..., Kth page],然后再次运行scrapy crawl.

这是最好的方法还是有更好的方法来动态分配start_urls使用scrapy API而不必覆盖example_splider.py?谢谢.

web-crawler scrapy

12
推荐指数
1
解决办法
9145
查看次数

具有长start_urls列表的Scrapy Crawling URL的顺序和来自spider的urls yiels

救命!阅读源代码Scrapy对我来说并不容易.我有一个很长的start_urls清单.它在文件中约为3,000,000.所以,我start_urls这样做:

start_urls = read_urls_from_file(u"XXXX")
def read_urls_from_file(file_path):
    with codecs.open(file_path, u"r", encoding=u"GB18030") as f:
        for line in f:
            try:
                url = line.strip()
                yield url
            except:
                print u"read line:%s from file failed!" % line
                continue
    print u"file read finish!"
Run Code Online (Sandbox Code Playgroud)

MeanWhile,我的蜘蛛的回调函数是这样的:

  def parse(self, response):
        self.log("Visited %s" % response.url)
        return  Request(url=("http://www.baidu.com"), callback=self.just_test1)
    def just_test1(self, response):
        self.log("Visited %s" % response.url)
        return Request(url=("http://www.163.com"), callback=self.just_test2)
    def just_test2(self, response):
        self.log("Visited %s" % response.url)
        return []
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 下载器使用的网址顺序?会提出的要求 just_test1,just_test2 通过下载器只有所有后方可使用 start_urls,使用?(我做了一些测试,似乎答案是没有) …

python web-crawler scrapy web-scraping python-2.7

6
推荐指数
1
解决办法
3073
查看次数

标签 统计

scrapy ×2

web-crawler ×2

python ×1

python-2.7 ×1

web-scraping ×1