提问人:elbillaf 提问时间:10/27/2023 最后编辑:chqrlieelbillaf 更新时间:10/30/2023 访问量:28
使用 lxml 解析来自 href 的实际链接 [duplicate]
parsing actual link from href using lxml [duplicate]
问:
使用 jupyter notebook、python 3。 我正在从网络上下载一些文件,其中大部分是在本地批量下载的。这些文件列在网页上,但它们位于 href 属性中。我找到的代码给了我文本,但没有实际的链接(即使我的理解是代码应该得到链接)。
这是我所拥有的:
import os
import requests
from lxml import html
from lxml import etree
import urllib.request
import urllib.parse
...
web_string = requests.get(url).content
parsed_content = html.fromstring(web_string)
td_list = [e for e in parsed_content.iter() if e.tag == 'td']
directive_list = []
for td_e in td_list:
txt = td_e.text_content()
directive_list.append(txt)
这是一个很长的网页,里面有一堆条目,看起来像<a href="file1.pdf"> text1 </a>
此代码返回:text1、text2 等,而不是 file1.pdf、file2.pdf
如何提取链接?
答:
2赞
Yuri R
10/27/2023
#1
您可以修改代码以专门查找每个元素中的元素并提取其属性。a
td
href
import requests
from lxml import html
url = 'YOUR_URL_HERE' # Replace with your URL
web_string = requests.get(url).content
parsed_content = html.fromstring(web_string)
# Find all 'a' elements inside 'td' elements
links = parsed_content.xpath('//td/a')
directive_list = []
for link in links:
# Get the href attribute
href = link.get('href')
# You might want to join this with the base URL if they are relative links
# href = urllib.parse.urljoin(url, href)
directive_list.append(href)
# Print the list of links
print(directive_list)
评论
href
是所谓的“属性”(锚点),而不是文本内容。a
a
td
element.attrib['href']
a