簡體   English   中英

具有多個表的時間表Web爬網(Python)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM