YGBGATES 2024-02-21 18:49 采纳率: 50%
浏览 12
已结题

关于xpath使用问题疑问

关于vscode 爬虫过程中 xpath 使用的问题


```python
from lxml import etree
import requests
url='https://pic.netbian.com/4kmeinv/'
headers={"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0'}
page_text=requests.get(url,headers=headers).content
tree = etree.HTML(page_text)
li_list=tree.xpath('//dv[@class="slist"]//li')
for li in li_list:
    img_src='https://pic.netbian.com'+li.xpath('./a/img/@src')[0]
    img_name=li.xpath('./a/img/@alt')[0]+'.jpg'
    print(img_name,img_src)

运行结果是这样的,没有爬取得到想要的链接和名称,希望得到解答

img


  • 写回答

4条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-02-21 20:27
    关注

    【以下回答由 GPT 生成】

    **解决方案:**
    
    在分析代码和目标页面结构后, 发现代码中存在一些问题:
    
    1. XPath中的选择器应该是`div`而不是`dv`:
       修改代码中的XPath选择器为`//div[@class="slist"]/ul/li`以匹配目标元素。
    
    2. 应该使用`text()`函数来获取文本内容而不是`@alt`属性:
       修改代码中获取img名称的XPath为`./a/img/text()`来获取文本内容。
    
    3. 需要处理相对链接的情况:
       在拼接图片链接时,可以使用`urllib.parse.urljoin`函数来处理相对链接。
    
    综上所述,修改后的代码片段如下:
    
    ```python
    from lxml import etree
    import requests
    from urllib.parse import urljoin
    
    url = 'https://pic.netbian.com/4kmeinv/'
    headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0'}
    page_text = requests.get(url, headers=headers).content
    tree = etree.HTML(page_text)
    li_list = tree.xpath('//div[@class="slist"]/ul/li')
    
    for li in li_list:
        img_src = urljoin(url, li.xpath('./a/img/@src')[0])
        img_name = li.xpath('./a/img/text()')[0] + '.jpg'
        print(img_name, img_src)
    

    通过以上修改, 应该可以成功爬取到想要的链接和名称了。 ``` 这里是示例图片:

    示例图片


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月23日
  • 已采纳回答 2月23日
  • 创建了问题 2月21日

悬赏问题

  • ¥15 短剧的sdk在哪里接入
  • ¥15 求:可不可以提供一些 在国内可以用,低代码不要太难 在电脑上可以下载的 制作app的软件
  • ¥60 找人回答kibana8.14.3二次集成开发,自定义插件ui导航栏如何设置
  • ¥15 fluke高精度万用表8845A型号测交流电压一直跳动,且去掉输入后显示不归零
  • ¥15 不同模型怎么用同一个shader
  • ¥15 安卓启动没有ais proxy与v4l2的log打印
  • ¥15 go怎么读取mdb文件里面的数据
  • ¥60 Matlab联合CRUISE仿真编译dll文件报错
  • ¥15 脱敏项目合作,ner需求合作
  • ¥15 脱敏项目合作,ner需求合作