Python打印多个项目-使用XPath进行Web抓取

Python打印多个项目-使用XPath进行Web抓取,python,pandas,function,xpath,web-scraping,Python,Pandas,Function,Xpath,Web Scraping,我是Python和编程的新手,所以请原谅我缺乏洞察力。我已经设法用Xpath在web上收集了一些数据 #Dependencies from lxml import html import requests #URL url = 'https://web.archive.org/web/20171004082203/https://www.yellowpages.com/houston-tx/air-conditioning-service-repair' #Use Requests t

我是Python和编程的新手,所以请原谅我缺乏洞察力。我已经设法用Xpath在web上收集了一些数据


#Dependencies 
from lxml import html
import requests

#URL 
url = 'https://web.archive.org/web/20171004082203/https://www.yellowpages.com/houston-tx/air-conditioning-service-repair'

#Use Requests to retrieve html 
resp = requests.get(url) 

#Create Tree from Request Response 
tree = html.fromstring(resp.content) 

#Create Tree element
elements = tree.xpath('//*[starts-with(@id,"lid-")]/div/div/div[2]/div[2]/div[2]/a[1]') 
# Scrape for URL and split for just business url
websites= (elements[0].attrib['href'].split("http://")[1])

此代码的输出返回单个网站url。但是,我想打印所有的业务URL,最终将其放入熊猫数据框架中

如何检索元素[0]、元素[1]、元素[2]。。。在一个变量或表达式中

我确信这有一个迭代函数或列表理解,但我不能把我的大脑围绕着它。我是这样想的:

我可以创建一个函数来迭代“元素[0]”并返回我的所有值吗


非常感谢您的帮助,谢谢

这里有一个快速修复程序,可以让这个特定站点的网站通过您的代码工作;它将它们全部存储在“网站”列表中。这就是说,如果你在做一个网络垃圾,你可能会更好地与之合作


您需要将“元素”列表中的所有内容连接成一个值并存储在一个变量中吗?我不确定我是否理解websites变量中的问题,我需要打印元素[x+1]的所有值。我正在尝试从网页中检索所有URL。谢谢您的帮助。有没有办法只从功能中返回网站?你的代码正在返回网站以及“方向”链接和其他我不需要的链接。BS4不能产生我所需要的结果,所以我现在尝试XPath抱歉,我的意思是删除:)现在就试试吧,太棒了!谢谢
#Create Tree element
elements = tree.xpath('//*[starts-with(@id,"lid-")]/div/div/div[2]/div[2]/div[2]/a[1]') 

websites = []
for element in elements:
    try:
        websites.append("http"+element.attrib['href'].split("http")[2])
    except:
        continue
    
for website in websites:
    print(website, '\n')