在python中,我有一个程序可以从URL列表中返回。
当它们被放在一个列表中时,其中一些返回Bad Request
例如,我将两个URL加载到文本文件中:
http://www.scientific.net/MSF
http://www.scientific.net/JMNM它返回:
<title>Bad Request</title>
<title>Journal of Metastable and Nanocrystalline Materials</title>如果我只有列表中的第一个URL,代码就可以正常工作。如何让它检索两个标题而不是错误请求?
我的代码:
url_list= []
f = open('test.txt','r') #text file with url
for line in f:
url_list.append(line)
for link in url_list:
try:
r = requests.get(link)
soup = BeautifulSoup(r.content,"html.parser")
title = soup.title
title.string = title.get_text(strip = True)
print(str(title))
except:
print("No Title Found ")
continue发布于 2017-02-20 12:23:58
您的问题是从文本文件读取时出现的。在for link in url_list循环中,link的第一个值将是http://www.scientific.net/MSF\n -最后的\n将导致Bad Request错误。在读取代码行时,将\n去掉,代码就可以正常工作了。您的最后一行似乎没有\n,因此简单地使用url_list.append(line[:-1])将在最后一行失败。
发布于 2017-02-20 11:59:51
r = requests.get(link)
soup = BeautifulSoup(r.content,"html.parser")
#title = soup.title
titles = soup.find_all('title')
for title in titles:
title.string = title.get_text(strip = True)
print(str(title)).是.find()的快捷方式,它将返回第一个匹配,您应该使用find_all()返回所有匹配。
https://stackoverflow.com/questions/42335987
复制相似问题