通过.txt fi向Scrapy Spider传递要爬网的URL列表

2024-06-01 00:15:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python有点陌生,对Scrapy也很陌生。

我已经设置了一个蜘蛛来抓取我需要的所有信息。但是,我需要将url的.txt文件传递给start-URLs变量。

对于exmaple:

class LinkChecker(BaseSpider):
    name = 'linkchecker'
    start_urls = [] #Here I want the list to start crawling a list of urls from a text file a pass via the command line.

我做了一点调查,一直空手而归。我见过这种类型的示例(How to pass a user defined argument in scrapy spider),但我认为对于传递文本文件来说,这不起作用。


Tags: 文件thetotxt信息urlpassurls
3条回答

您只需读入.txt文件即可:

with open('your_file.txt') as f:
    start_urls = f.readlines()

如果最后是尾随的换行符,请尝试:

with open('your_file.txt') as f:
    start_urls = [url.strip() for url in f.readlines()]

希望这有帮助

使用-a选项运行蜘蛛,如:

scrapy crawl myspider -a filename=text.txt

然后在蜘蛛的__init__方法中读取文件并定义start_urls

class MySpider(BaseSpider):
    name = 'myspider'

    def __init__(self, filename=None):
        if filename:
            with open(filename, 'r') as f:
                self.start_urls = f.readlines()

希望能有所帮助。

如果你的网址是行分隔的

def get_urls(filename):
        f = open(filename).read().split()
        urls = []
        for i in f:
                urls.append(i)
        return urls 

然后这几行代码将给出url。

相关问题 更多 >