我试图从纽约时代得到一组网址(这是网页),但我得到了一个不同的答案,我确信我给了一个正确的类,虽然它提取了不同的类。我的ny_url.txt有“http://query.nytimes.com/search/sitesearch/?action=click®ion=Masthead&pgtype=SectionFront&module=SearchSubmit&contentCollection=us&t=qry900#/isis; http://query.nytimes.com/search/sitesearch/?action=click®ion=Masthead&pgtype=SectionFront&module=SearchSubmit&contentCollection=us&t=qry900#/isis/since1851/allresults/2/”
这是我的代码:
import urllib2
import urllib
from cookielib import CookieJar
from bs4 import BeautifulSoup
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
text_file = open('ny_url.txt', 'r')
for line in text_file:
print line
soup = BeautifulSoup(opener.open(line))
links = soup.find_all('div', attrs = {'class' : 'element2'})
for href in links:
print href
答案 0 :(得分:1)
嗯,不是那么简单。
您要查找的数据不在urllib2下载的page_source中。
尝试打印opener.open(line).read()
,您会发现数据丢失。
这是因为,该网站正在向http://query.nytimes.com/svc/cse/v2pp/sitesearch.json?query=isis&page=1
在您的查询参数传递query=isis
和page=1
获取的数据是json格式,尝试手动打开浏览器中的上面的url。你会在那里找到你的数据。
所以纯粹的pythonic方式是调用这个url并解析JSON以获得你想要的东西。 不需要火箭科学 - 只需使用正确的密钥解析字典。
OR
更简单的方法是使用像Selenium
这样的网络驱动程序 - 导航到页面 - 并使用BeautifulSoup解析页面源代码。这应该很容易获取整个内容。
希望有所帮助。如果您需要更多见解,请与我们联系。