抓取财富500强公司信息
我正在尝试从http://fortune.com/fortune500这个网站上抓取公司信息,用于我的论文。当我从这个链接下载网页内容时,发现里面没有可以解析的链接。不过,如果我在Chrome浏览器中打开这个链接,它会自动跳转到第一个公司的页面。
有没有人能帮我解释一下发生了什么,以及我该如何从原始网址找到公司页面的链接呢?
1 个回答
2
首先,你需要获取一个叫做 postid
的东西,然后向 /data/franchise-list
发送一个请求,接着从第一个文章中获取网址:
import json
import re
from urllib2 import urlopen
from urlparse import urljoin
from bs4 import BeautifulSoup
data = urlopen('http://fortune.com/fortune500/')
soup = BeautifulSoup(data)
postid = next(attr for attr in soup.body['class'] if attr.startswith('postid'))
postid = re.match(r'postid-(\d+)', postid).group(1)
url = "http://fortune.com/data/franchise-list/{postid}/1/".format(postid=postid)
data = json.load(urlopen(url))
resulting_url = urljoin(url, data['articles'][0]['url'])
print resulting_url
输出结果:
http://fortune.com/fortune500/wal-mart-stores-inc-1/