bd_name = html.xpath("//td[@width='30%']/text()").get() bd_name1 = html.xpath("//td[@class='bdmc']/following-sibling::*[1]/text()").get('')
时间: 2024-04-09 11:32:31 浏览: 16
在给定的HTML文档中,这两行代码使用XPath选择器从HTML中提取信息。
第一行代码:
`bd_name = html.xpath("//td[@width='30%']/text()").get()`
这行代码使用XPath选择器选择`<td>`元素,并且该元素的`width`属性的值为`30%`。然后,`.get()`方法用于获取匹配到的元素的文本内容。所以,`bd_name`变量将包含所选元素的文本内容。
第二行代码:
`bd_name1 = html.xpath("//td[@class='bdmc']/following-sibling::*[1]/text()").get('')`
这行代码使用XPath选择器选择具有`class`属性值为`bdmc`的`<td>`元素。然后,`following-sibling::*[1]`表示选择该元素的下一个兄弟节点。最后,`.get('')`方法用于获取所选元素的文本内容,如果没有匹配到任何元素,则返回空字符串`''`。
注意:以上代码中的`html`是HTML文档的变量名,你可以根据实际情况进行替换。
相关问题
# 文件保存路径 file_path = './test' create_file(file_path) # 获取图片 for i in img_list: try: img_url = i.xpath('./@src')[0] except: img_url = i.xpath('./@data-src')[0] # 文件名称 file_name = f'{file_path}/page_{cnt}.jpg' print(file_name, img_url) # 下载保存图片 resp = requests.get(img_url) with open(file_name, 'wb') as f: f.write(resp.content) cnt += 1修改这部分代码,使得存储文件名和路径分开来
要将存储文件名和路径分开来,可以在 `file_path` 和 `file_name` 中分别使用不同的变量来构造。具体来说,可以定义一个变量 `file_dir` 来存储文件夹路径,再根据当前图片序号 `cnt` 构造出文件名 `file_name`,然后将 `file_dir` 和 `file_name` 合并起来得到完整的文件路径。
修改后的代码如下:
```python
# 文件保存路径
file_dir = './test'
create_file(file_dir)
# 获取图片
cnt = 0
for i in img_list:
try:
img_url = i.xpath('./@src')[0]
except:
img_url = i.xpath('./@data-src')[0]
# 文件名称
file_name = f'page_{cnt}.jpg'
print(file_name, img_url)
# 下载保存图片
resp = requests.get(img_url)
file_path = os.path.join(file_dir, file_name) # 合并文件路径
with open(file_path, 'wb') as f:
f.write(resp.content)
cnt += 1
```
这样,存储文件名和路径就被分开来了,文件名和路径的构造也更加清晰易懂。
import requests from lxml import etree import pandas as pd headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' } url = f'http://b2b.huangye88.com/shenzhen/jixie/pn2/' res = requests.get(url, headers=headers) res.encoding = 'utf-8' html = etree.HTML(res.text) for et in html.xpath('//*[@id="jubao"]/dl'): name = et.xpath('./dt/h4/a/@title') print(name[0]) hrefs = [] href = et.xpath("./dt/h4/a/@href")[0] hrefs.append(href) content = [] # 保存内容 for u in hrefs: msg = requests.get(u).text xmsg = etree.HTML(msg) if len(name) != 0: tel = xmsg.xpath('/ul[@class ="1-txt none"/li') if len(tel) != 0: tel_name = tel.xpath('.//label/text()') if len(tel_name) != 0: tel_iphone=tel.xpath('.//span[@class="secret"]/text()') if len(tel_iphone) != 0: tel = tel[0] print(name[0], tel_name,tel_iphone, '\n')
根据您提供的代码,我注意到您在进行xpath解析时出现了一些错误。以下是我发现的问题和修复建议:
1. 在`tel = xmsg.xpath('/ul[@class ="1-txt none"/li')`这行代码中,XPath表达式的括号未正确闭合。修改为`tel = xmsg.xpath('//ul[@class="1-txt none"]/li')`。
2. 在`tel = tel[0]`这行代码中,您将`tel`变量重新赋值为列表中的第一个元素。但是,在上一行代码中,您已经将`tel`变量用于判断是否存在电话信息。因此,在这里不需要重新赋值。
下面是修复后的代码片段:
```python
import requests
from lxml import etree
import pandas as pd
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
url = f'http://b2b.huangye88.com/shenzhen/jixie/pn2/'
res = requests.get(url, headers=headers)
res.encoding = 'utf-8'
html = etree.HTML(res.text)
for et in html.xpath('//*[@id="jubao"]/dl'):
name = et.xpath('./dt/h4/a/@title')
print(name[0])
hrefs = []
href = et.xpath("./dt/h4/a/@href")[0]
hrefs.append(href)
content = [] # 保存内容
for u in hrefs:
msg = requests.get(u).text
xmsg = etree.HTML(msg)
if len(name) != 0:
tel = xmsg.xpath('//ul[@class="1-txt none"]/li')
if len(tel) != 0:
tel_name = tel.xpath('.//label/text()')
if len(tel_name) != 0:
tel_iphone=tel.xpath('.//span[@class="secret"]/text()')
if len(tel_iphone) != 0:
print(name[0], tel_name, tel_iphone, '\n')
```
请注意,这只是对您提供的代码片段进行了修复,并不能保证整个代码的正确性。如果您还遇到其他问题,请提供更多的信息,我将尽力帮助您解决。