【发布时间】:2017-05-19 18:21:20
【问题描述】:
我编写了一些代码来解析来自 craigslist 的名称、链接和价格。当我打印结果时,这些被作为列表刮掉了。我尝试像下面粘贴的代码一样获得解决方法,但是它给出了错误的三元组,特别是当一个值为 none 时,它会从另一个三元组中获取下一个可用值,依此类推。因此,在这种情况下它是没有用的。希望我对如何完成这项工作有任何建议,无论是 Itertools 还是任何其他方法。
import requests
from lxml import html
from itertools import zip_longest
Page_link="http://bangalore.craigslist.co.in/search/rea?s=120"
def parsing_craigslist(url):
response = requests.get(url)
tree = html.fromstring(response.text)
title = tree.xpath("//p[@class='result-info']//a[contains(concat(' ', @class, ' '), ' result-title ')]/text()")
link = tree.xpath("//p[@class='result-info']//a[contains(concat(' ', @class, ' '), ' result-title ')]/@href")
price = tree.xpath("//p[@class='result-info']//span[@class='result-price']/text()")
for i,j,k in zip_longest(title,link,price,fillvalue=None):
print(i,j,k)
parsing_craigslist(Page_link)
【问题讨论】:
-
看到它们是分开的,比如
title在一行然后link在另一行然后price在第三行?只需使用三个print语句,或使用pprint。 -
感谢 Tadhg McDonald-Jensen 的回答。我非常抱歉未能阐明输出应该如何。现在,你可以看到了。
-
我已经尝试过你的抓取,它有效,我使用 zip :
for i,j,k in zip(title,link,price):你的问题是什么? -
感谢 Tiny.D 的回答。该页面包含 120 条记录,使用 zip 我得到了 82 条记录。 Zip 函数错误地修补了潜在客户,因为当它看到 (title,link,price) 中的任何一个值丢失时,它会获取下一个可用值。如果你看一下,你会看到在 16 日之后记录所有价格与标题和链接不匹配的值。谢谢。
-
所以问题是缺少某些字段?如果他们是
None,你就没有问题,丢失意味着配对不同步。如何确定哪些数据相互对应?
标签: python-3.x web-scraping web-crawler