我刚刚安装了scrapy,并按照他们的简单dmoz 教程工作.我只是查找了python的基本文件处理,并试图让爬虫从文件中读取URL列表,但是出现了一些错误.这可能是错的,但我试了一下.有人请告诉我一个将URL列表读入scrapy的例子吗?提前致谢.
from scrapy.spider import BaseSpider
class DmozSpider(BaseSpider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
f = open("urls.txt")
start_urls = f
def parse(self, response):
filename = response.url.split("/")[-2]
open(filename, 'wb').write(response.body)
Run Code Online (Sandbox Code Playgroud)
Bri*_*ain 35
你非常接近.
f = open("urls.txt")
start_urls = [url.strip() for url in f.readlines()]
f.close()
Run Code Online (Sandbox Code Playgroud)
...更好的方法是使用上下文管理器确保文件按预期关闭:
with open("urls.txt", "rt") as f:
start_urls = [url.strip() for url in f.readlines()]
Run Code Online (Sandbox Code Playgroud)
如果 Dmoz 只需要列表中的文件名,则必须在每一行上调用 strip。否则,您会在每个 URL 的末尾得到一个 '\n'。
class DmozSpider(BaseSpider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [l.strip() for l in open('urls.txt').readlines()]
Run Code Online (Sandbox Code Playgroud)
Python 2.7 中的示例
>>> open('urls.txt').readlines()
['http://site.org\n', 'http://example.org\n', 'http://example.com/page\n']
>>> [l.strip() for l in open('urls.txt').readlines()]
['http://site.org', 'http://example.org', 'http://example.com/page']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19019 次 |
| 最近记录: |