我试图将一个快速实用程序打包在一起,该实用程序将从网站的表中读取记录并将它们插入到数据库中。有几个条件:
所以有人知道一个好的图书馆或实用程序可以“抓住”#34; ID的html元素让我解析它?我知道这是不言而喻的,但我更喜欢一个尽可能快的。
答案 0 :(得分:1)
jQuery可以通过它的Id来选择一个元素。
请参阅use-jquery-to-extract-data-from-html-lists-and-tables
文章的要点是:
var tableObject = $('#myTable tbody tr').map(function(i) {
var row = {};
// Find all of the table cells on this row.
$(this).find('td').each(function(i) { //do something with each td }
答案 1 :(得分:1)
您可以使用正则表达式:
<table[^>]*id="whatever"[^>]*>(.*?)</table>
然后提取第一组(parens中的匹配部分)并解析出行:
<tr[^>]*>(.*?)</tr>
最后,每行提取单元格:
<td[^>]*>(.*?)</td>
这适用于您提到的任何语言。
答案 2 :(得分:1)
您可以在Python中使用lxml
library:
#!/usr/bin/env python
import urllib2
from lxml import html # $ apt-get install python-lxml or $ pip install lxml
page = urllib2.urlopen('http://stackoverflow.com/q/11939631')
doc = html.parse(page).getroot()
div = doc.get_element_by_id('question')
for tr in div.find('table').iterchildren('tr'):
for td in tr.iterchildren('td'):
print(td.text_content()) # process td
如果你熟悉jQuery;你可以使用pyquery。它在lxml:
之上添加了jQuery接口#!/usr/bin/env python
from pyquery import PyQuery # $ apt-get install python-pyquery or
# $ pip install pyquery
# d is like the $ in jquery
d = PyQuery(url='http://stackoverflow.com/q/11939631', parser='html')
for tr in d("#question table > tr"):
for td in tr.iterchildren('td'):
print(td.text_content())
虽然在这种情况下pyquery
添加不够。这里只使用lxml
:
#!/usr/bin/env python
import urllib2
from lxml import html
page = urllib2.urlopen('http://stackoverflow.com/q/11939631')
doc = html.parse(page).getroot()
for tr in doc.cssselect('#question table > tr'):
for td in tr.iterchildren('td'):
print(td.text_content()) # process td
注意:最后两个示例枚举#question
元素中所有表(不仅仅是第一个)中的行。