【发布时间】:2017-07-26 09:15:09
【问题描述】:
作为我博士学位的一部分。研究,我正在抓取大量网页并在抓取结果中搜索关键字。
到目前为止,我是这样做的:
# load data with as pandas data frame with column df.url
df = pd.read_excel('sample.xls', header=0)
# define keyword search function
def contains_keywords(link, keywords):
try:
output = requests.get(link).text
return int(any(x in output for x in keywords))
except:
return "Wrong/Missing URL"
# define the relevant keywords
mykeywords = ('for', 'bar')
# store search results in new column 'results'
df['results'] = df.url.apply(lambda l: contains_keywords(l, mykeywords))
这很好用。我只有一个问题:相关关键字列表mykeywords经常更改,而网页保持不变。运行代码需要很长时间,因为我一遍又一遍地request。
我有两个问题:
(1) 有没有办法存储request.get(link).text的结果?
(2) 如果是这样,我如何在保存的文件中进行搜索,产生与当前脚本相同的结果?
一如既往,感谢您的时间和帮助! /R
【问题讨论】:
-
只需将它们保存在
urls目录中的文件中,然后将此行:output = requests.get(link).text替换为:output = open('urls/'+link).read() -
这会产生几个我以后可以索引的文件吗?我不需要为每个请求的 url 指定一个文件名吗?
-
a) 下载每个链接的内容并将其保存在本地磁盘上 - 使用合适的名称,例如:“some.site.com_some_path.html” b) 在@987654328 中传递文件名@ 并读取文件。
-
谢谢,这是我的主意。但是我在 pandas 数据框中有大约 1800 个 URL,我没有设法自动执行此操作。
标签: python-3.x pandas web-scraping python-requests