0

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

url_1
url_2
url_3
....
url_n

我想在 python 中遍历所有这些以获取每个 url 页面的内容(文本)。浏览此文本文件中的每个 url 的最简单方法是什么?刮痧?或者只是写另一个脚本?

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()
4

2 回答 2

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
于 2013-10-13T02:13:38.573 回答
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.pyurls.txt文件放在同一目录中。

于 2013-10-14T12:57:22.453 回答