zhangpeinan123 2023-11-02 22:24 采纳率: 66.7%
浏览 5

(标签-爬虫|关键词-path)

求问xpath爬虫的全流程,之前找到的壁纸网站都是有//img元素的,所以可以直接使用这段程序:

result = requests.get(u)
data = etree.HTML(result.content)
d = data.xpath('/img')
cnt = 1
for i in d:
    newurl = i.xpath('./@src')[0]
    newname = '科幻朋克壁纸' + str(cnt)
    newurl = 'https:' + str(newurl)
    print(newurl)
    request.urlretrieve(newurl, r'D:\pictures\科幻朋克壁纸' + newname + '.jpg')
    print('<%s>下载完毕'%newname)
    cnt += 1

但是对这个网址进行爬虫的时候,发现它并没有img元素,该如何解决,求指点。

https://www.360kuai.com/pc/huabao?rawurl=http%3A%2F%2Fhuabao.360.cn%2F324822&tj_url=983b3c7c28db4456f&nsid=08e323dfa268ac2381cee5ea90b18279&scene=1&refer_scene=0_dhsrc:lm&sign=360_36e79513&uid=234898968.614991739000600700.1685096948516.9038&djsource=XsgsZg&tmprtp=expf%3Dcomindexo2043%2Copenscreenv3%2Ccube_gw%2Csearch_beta%2Ccube_new2021%26reqid%3D08e323dfa268ac2381cee5ea90b18279&hsid=70b9f698df143cf4
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-03 09:16
    关注

    【以下回答由 GPT 生成】

    对于没有<img>元素的网页,我们可以使用其他方法来抓取网页中的图片链接。有两种常见的方法可以完成这个任务:使用正则表达式或使用第三方库BeautifulSoup。

    方法1: 使用正则表达式

    在这种情况下,我们可以使用正则表达式来匹配网页中的图片链接。以下是一个示例代码:

    import re
    import requests
    
    result = requests.get(url)
    html_content = result.text
    
    # 使用正则表达式匹配图片链接
    pattern = r'<img.*?src="(.*?)".*?>'
    matches = re.findall(pattern, html_content)
    
    cnt = 1
    for match in matches:
        new_url = match
        new_name = '科幻朋克壁纸' + str(cnt)
        new_url = 'https:' + str(new_url)
        print(new_url)
        request.urlretrieve(new_url, r'D:\pictures\科幻朋克壁纸' + new_name + '.jpg')
        print('<%s>下载完毕' % new_name)
        cnt += 1
    

    这段代码将使用正则表达式<img.*?src="(.*?)".*?>来匹配网页中的图片链接,并将其保存在matches列表中。然后我们可以像之前一样处理这些链接。

    方法2: 使用BeautifulSoup

    BeautifulSoup是一个优秀的第三方库,它可以方便地解析HTML和XML文档。以下是使用BeautifulSoup的示例代码:

    from bs4 import BeautifulSoup
    import requests
    
    result = requests.get(url)
    html_content = result.text
    
    soup = BeautifulSoup(html_content, 'html.parser')
    
    # 使用BeautifulSoup提取图片链接
    img_elements = soup.find_all('img')
    cnt = 1
    for element in img_elements:
        new_url = element['src']
        new_name = '科幻朋克壁纸' + str(cnt)
        new_url = 'https:' + str(new_url)
        print(new_url)
        request.urlretrieve(new_url, r'D:\pictures\科幻朋克壁纸' + new_name + '.jpg')
        print('<%s>下载完毕' % new_name)
        cnt += 1
    

    这段代码通过使用BeautifulSoup库的find_all()函数找到所有的<img>元素,并提取它们的src属性值作为图片链接。然后我们可以像之前一样处理这些链接。

    希望这些方法可以解决你的问题,如果有任何疑问,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月2日