我正在尝试构建一个刮板,通过 mechanize 和 lxml 从多个网页上的表格中刮取信息。下面的代码返回一个元素列表,我试图找到一种从这些元素中获取文本的方法(添加 .text 不适用于列表对象)
代码如下:
import mechanize
import lxml.html as lh
import csv
br = mechanize.Browser()
response = br.open("http://localhost/allproducts")
output = csv.writer(file(r'output.csv','wb'), dialect='excel')
for link in br.links(url_regex="product"):
follow = br.follow_link(link)
url = br.response().read()
find = lh.document_fromstring(url)
find = find.findall('.//td')
print find
output.writerows([find])
如果我在上面的代码末尾添加以下内容,来自 tds 的文本出现在 csv 文件中,但来自每个 td 的文本出现在单独的行上,我希望格式与上面的代码相同使用文本而不是元素列表(每页的所有信息都在一行上)
for find in find:
print find.text
output.writerows([find.text])
我从一堆其他示例中获取了代码,因此也非常感谢任何一般性建议