[英]Timetable Web Scraping with multiple tables (Python)
我只是在尋找有關python web抓取的信息。 我正在嘗試從該時間表中獲取所有數據,並且我希望該類鏈接到該時間。 看html,有多個表(表中的表)。 我打算將Google App Engine與Python結合使用(也許也可以使用BeautifulSoup)。 關於此的最佳方法有什么建議嗎?
謝謝
更新:
我設法使用以下代碼從表中提取了所需的數據:
import urllib
from lxml import etree
import StringIO
url = "http://ttcache.dcu.ie/Reporting/Individual;Locations;id;lg25?
template=location+Individual&weeks=20&days=1-5&periods=1-30&Width=0&Height=0"
result = urllib.urlopen(url)
html = result.read()
parser = etree.HTMLParser()
tree = etree.parse(StringIO.StringIO(html), parser)
xpath = "//table[2]/tr/td//text()"
filtered_html = tree.xpath(xpath)
print filtered_html
但是我得到了很多u'\\xa0', u'\\xa0', '\\r\\n', '\\r\\n'
字符,這些字符分散在整個解析的文本中。 關於如何應對這些問題的任何建議?
謝謝
可用於解析HTML的最佳庫是基於libxml2的lxml。 盡管它旨在用於XML解析,但它也具有HTML解析器,該解析器處理標簽湯的能力比BeautifulSoup更好。 由於解析器位於C語言中,因此速度也快得多。
您還可以訪問XPath來查詢HTML dom,並且libxml2支持XPath中的正則表達式匹配,這對於Web抓取非常有用。
libxml2和lxml得到很好的支持,您會在所有主要發行版中找到針對它們的軟件包。 如果您使用的是2.7 https://developers.google.com/appengine/docs/python/tools/libraries27,則Google App引擎似乎也支持它。
編輯:
您得到的字符是由於頁面上有很多空表單元格,因此您的xpath通常匹配空白字符(不間斷空格)。 您可以使用正則表達式跳過不包含非空格字符的文本節點,如下所示:
xpath = "//table[2]/tr/td//text()[re:match(., '\\S')]"
filtered_html = tree.xpath(
xpath,
namespaces={"re": "http://exslt.org/regular-expressions"})
名稱空間只是告訴lxml您要使用它的正則表達式擴展名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.