【发布时间】:2017-08-31 00:14:08
【问题描述】:
我已经制作了一个用 python 编写的解析器,它完美地完成了它的工作,除了一些重复出现。此外,当我打开 csv 文件时,我可以看到每个结果都被方括号包围。是否有任何解决方法可以即时删除重复数据和方括号?这是我尝试过的:
import csv
import requests
from lxml import html
def parsingdata(mpg):
data = set()
outfile=open('RealYP.csv','w',newline='')
writer=csv.writer(outfile)
writer.writerow(["Name","Address","Phone"])
pg=1
while pg<=mpg:
url="https://www.yellowpages.com/search?search_terms=Coffee%20Shops&geo_location_terms=Los%20Angeles%2C%20CA&page="+str(pg)
page=requests.get(url)
tree=html.fromstring(page.text)
titles = tree.xpath('//div[@class="info"]')
items = []
for title in titles:
comb = []
Name = title.xpath('.//span[@itemprop="name"]/text()')
Address = title.xpath('.//span[@itemprop="streetAddress" and @class="street-address"]/text()')
Phone = title.xpath('.//div[@itemprop="telephone" and @class="phones phone primary"]/text()')
try:
comb.append(Name[0])
comb.append(Address[0])
comb.append(Phone[0])
except:
continue
items.append(comb)
pg+=1
for item in items:
writer.writerow(item)
parsingdata(3)
现在它工作正常。 编辑:取自 bjpreisler 的更正部分
【问题讨论】:
-
不阅读您的代码:丢弃重复项的规范解决方案是使用包含所有可见值的集合。在对你出现的下一个值进行任何操作之前,请检查它是否在集合中。
-
感谢 timgeb 先生的回答。将尝试实施您刚才所说的内容,但我是新手,因此有时很难相应地维护指南。谢谢。
-
尊敬的 timgeb 先生,我尝试按照您所说的进行操作,但这次它产生了 unhashable type: 'list' 错误。
-
存储一个hashable类型,对应的元组或字符串。
标签: python csv web-scraping