我的Python脚本存在问题,我想从每个网站上抓取相同的内容。我有一个包含大量URL的文件,我希望Python通过它们将它们放入requests.get(url)对象中。之后,我将输出写入名为'somefile.txt'的文件。
我必须使用以下Python脚本(版本2.7 - Windows 8):
from lxml import html
import requests
urls = ('URL1',
'URL2',
'URL3'
)
for url in urls:
page = requests.get(url)
tree = html.fromstring(page.text)
visitors = tree.xpath('//b["no-visitors"]/text()')
print 'Visitors: ', visitors
f = open('somefile.txt', 'a')
print >> f, 'Visitors:', visitors # or f.write('...\n')
f.close()
如您所见,是否未在脚本中包含带有URL的文件。我尝试了很多教程,但都失败了。文件名为'urllist.txt'。在当前脚本中,我只从URL3获取数据 - 在理想情况下,我想从urllist.txt获取所有数据。
尝试阅读文本文件:
with open('urllist.txt', 'r') as f: #text file containing the URLS
for url in f:
page = requests.get(url)
答案 0 :(得分:0)
您需要从行中删除换行符:
public class Language
{
public MainForm mainform;
public ucAnimalInfo animalinfo;
public ucAnimalInput animalinput;
public ucSettings settings;
public void setLanguage()
{
mainform.Animal_Info_Tab.Info_Id_Text.Text = mainform.Settings_Tab.rs.GetString("Info_Save_Btn", mainform.Settings_Tab.ci);
}
with open('urllist.txt', 'r') as f: #text file containing the URLS
for url in f:
page = requests.get(url.strip())
调用会从行中删除所有空格(包括制表符和换行符以及回车符)。
请确保您在循环中处理str.strip()
;如果您运行代码以在循环外提取数据,那么您将获得的是您加载的最后一个响应的数据。您也可以在page
语句中打开输出文件一次,以便Python再次关闭它:
with
答案 1 :(得分:0)
您应该将每个页面保存在单独的变量中,或者在URL列表的循环中执行所有计算。
根据您的代码,当您的页面解析发生时,它将只包含最后一页获取的数据,因为您在每次迭代中覆盖了page
变量。
以下内容应附加所有页面'资讯
for url in urls:
page = requests.get(url)
tree = html.fromstring(page.text)
visitors = tree.xpath('//b["no-visitors"]/text()')
print 'Visitors: ', visitors
f = open('somefile.txt', 'a')
print >> f, 'Visitors:', visitors # or f.write('...\n')
f.close()