Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用lxml-python从网站中删除Url和文本_Python_Web Scraping_Lxml - Fatal编程技术网

使用lxml-python从网站中删除Url和文本

使用lxml-python从网站中删除Url和文本,python,web-scraping,lxml,Python,Web Scraping,Lxml,我对lxml和XPath了解不多,我想学习如何从网站上抓取数据。当我运行这段代码时,我没有得到任何结果,也不知道为什么。请帮我修一下 代码在这里 from lxml import html import requests pageLen=str(100) page = requests.get('http://www.yellowpages.com/search?search_terms=lawyer&geo_location_terms=usa&page=2') print(p

我对lxml和XPath了解不多,我想学习如何从网站上抓取数据。当我运行这段代码时,我没有得到任何结果,也不知道为什么。请帮我修一下

代码在这里

from lxml import html
import requests
pageLen=str(100)
page = requests.get('http://www.yellowpages.com/search?search_terms=lawyer&geo_location_terms=usa&page=2')
print(page)
tree = html.fromstring(page.content)
#phoneNumber = tree.xpath('//span[@class="c411Phone"]/text()')
Link=tree.xpath('//div[@class="info"]/a/@href')
Bname=tree.xpath('//a[@class="business-name"]/text()')
print(Bussiness_names)
print(Bname)
HTML代码

又快又脏:

from lxml import html
import requests

url = 'http://www.yellowpages.com/search?search_terms=lawyer&geo_location_terms=usa&page=2'
page = requests.get(url)
tree = html.fromstring(page.text)
tree.make_links_absolute(url)
for business in tree.xpath('//a[@class="business-name"]'):
  print business.attrib['href'], business.text

谢谢你@Abd Azrad。你的解决方案对我帮助很大

你能进一步指导我吗?我不知道如何处理不一致的数据? 有时,邮政地址缺失,有时位置缺失。我只想忽略那些不符合我要求的数据。

page=requests.get('http://www.yellowpages.com/search?search_terms=%s&geo_location_terms=%s&page=%s“%(“律师”、“托罗诺”、“2”))
tree=html.fromstring(page.text)
bus_names=tree.xpath('//a[@class=“business name”]/text())
打印总线名称
##bus_url=tree.xpath('//a[@class=“business name”]/href())
##打印总线地址
street_ad=tree.xpath('//span[@class=“street address”]/text())
印刷品(街头广告)
loc=tree.xpath('//span[@class=“locality”]/text())
打印(loc)
postal=tree.xpath('//span[@itemprop=“postalCode”]/text())
印刷品(邮政)
contact=tree.xpath('//div[@class=“phones-phone-primary”]/text())
打印(联系人)


通过这种方式,我得到了列表,但由于列表长度不同,我无法保持跟踪数据。是否有任何方法可以获取列表中每个人的数据以及2d列表形式的所有数据[[人名,人名地址],[人名,人名联系人]?

您考虑过使用Beautiful Soup吗?我没有试过漂亮的肥皂。我不能用lxml提取链接吗?如果你不知道XPath和lxml是如何工作的,你需要去学习XPath并阅读lxml文档。你能给我推荐一些好书或教程吗?lxml文档是pdf格式的,w3schools提供了一个很好的xpath教程,将第二个脚本更改为python 2.7。您能告诉我如何获取url吗?遗憾的是,这个网站并不是专门为这种持续的帮助而建立的。我建议发布一个新问题。但这里有一些一般性的建议:使用字典来存储每个业务()。使用
try
except
来处理丢失的数据()。