使用python从文本文件加载url

时间:2013-10-13 02:04:17

标签: python scrapy urllib

我将200个网址放在一个名为url.txt的文本文件中,如下所示:

url_1
url_2
url_3
....
url_n

我想在python中浏览所有这些内容以获取每个网址页面(文本)的内容。从这个文本文件中查看每个URL的最简单方法是什么? scrapy?或者只是写另一个脚本?

import urllib
from bs4 import BeautifulSoup as BS

html =urllib.urlopen('url').read()

soup = BS(html)


print soup.find('div',{'class':'drkgry'})[1].get_text()

2 个答案:

答案 0 :(得分:2)

这看起来很简单 - 这就是你要找的吗?

import urllib2

with open('MyFileOfURLs.txt', 'r') as f:
    urls = []
    for url in f:
        urls.append(url.strip())

html = {}
for url in urls:
    urlFile = urllib2.urlopen(url) as urlFile
    html[url] = urlFile.read()
    urlFile.close()

print html

答案 1 :(得分:1)

除非你想快速抓取(由于异步性质),跟踪链接,提取许多字段等,否则Scrapy可能对此任务有点过分。

这样的蜘蛛就像

from scrapy.http import Request
from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider


class MySpider(BaseSpider):
    name = 'myspider'

    def start_requests(self):
        with open('urls.txt') as fp:
            for line in fp:
                yield Request(line.strip(), callback=self.parse_website)

    def parse_website(self, response):
        hxs = HtmlXPathSelector(response)
        print hxs.select('//div[@class="drkgry"]/text()').extract()

您可以跳过创建完整项目。将其另存为myspider.py并在同一目录中运行scrapy runspider myspider.py urls.txt个文件。