【发布时间】:2016-01-22 19:14:54
【问题描述】:
我正在做我自己的一个小项目,并试图将我的注意力集中在网络抓取上。
我正在使用 Python 2 和 BeautifulSoap 模块(但也尝试了其他模块,尝试使用 re 模块等)。
简单地说,给定网站:http://www.bankofcanada.ca/rates/exchange/daily-closing-past-five-day/我想收集有关每种货币的汇率信息,但代码更灵活。
这是我的例子:
import urllib2
from bs4 import BeautifulSoup
import string
import re
myurl = 'http://www.bankofcanada.ca/rates/exchange/daily-closing-past-five-day/'
soup = BeautifulSoup(urllib2.urlopen(myurl).read(), "lxml")
dataTables = soup.find_all('td')
brandNewList = []
for x in dataTables:
text = x.get_text().strip()
brandNewList.append(text)
#print text
for index, item in enumerate(brandNewList):
if item == "U.S. dollar (close)":
for item in brandNewList[index:6]:
print item
它显示:
$ python crawler.py
U.S. dollar (close)
1.4530
1.4557
1.4559
1.4490
1.4279
所以,如你所见,我可以通过抓取“td”标签来显示每种货币对应的数据;如果我将“th”与“td”标签结合使用,我可以得到更具体的信息。 但是,如果我不想指定确切的字符串“U.S. Dollar (close)”,如何使脚本模式适应不同的网站? 例如,我想从终端仅输入“US”/“us”作为参数,脚本将根据列在不同网站上的命名方式独立返回与美元对应的值?
另外,我是 Python 的初学者,你能告诉我重写我的网络爬虫的更简洁的方法吗?感觉就像我用一种“愚蠢”的方式写的,主要是:)
【问题讨论】:
标签: python python-2.7 web-scraping beautifulsoup