我有近2500个唯一链接,我想从中运行BeautifulSoup并收集2500页中每个页面中段落中捕获的文本。我可以为每个链接创建变量,但拥有2500显然不是最有效的行动方案。链接包含在如下列表中:
linkslist = ["http://www.website.com/category/item1","http://www.website.com/category/item2","http://www.website.com/category/item3", ...]
我应该像以下一样编写for
循环吗?
for link in linkslist:
opened_url = urllib2.urlopen(link).read()
soup = BeautifulSoup(opened_url)
...
我正在寻找任何建设性的批评。谢谢!
答案 0 :(得分:1)
这是Scrapy
的一个很好的用例 - 一个基于Twisted
的流行网络抓取框架:
Scrapy是用Twisted编写的,这是一种流行的事件驱动网络 Python的框架。因此,它使用非阻塞(也就是说 异步)并发代码。
设置蜘蛛的start_urls
属性并解析parse()
回调中的页面:
class MySpider(scrapy.Spider):
name = "myspider"
start_urls = ["http://www.website.com/category/item1","http://www.website.com/category/item2","http://www.website.com/category/item3", ...]
allowed_domains = ["website.com"]
def parse(self, response):
print response.xpath("//title/text()").extract()
答案 1 :(得分:1)
编写一个可以单独处理每个URL的函数怎么样?
child.twig
这将在列表中的每个网址上运行您的功能。如果你想加快速度,这很容易并行:
content