Requests-HTML 抓取 <a> 标签图片 url (Requests-HTML, python)

Requests-HTML scrape <a> tag image url (Requests-HTML, python)

html 尝试从以下 webpage i have identified that the image url is in a tag with the class name item: Chrome inspect tool

中提取 cpu 图像

这是我的代码

from requests_html import HTMLSession
session = HTMLSession()

r = session.get('https://au.pcpartpicker.com/product/jLF48d')

about = r.html.find('.item')

print(about)

这会打印

Element 'a' class=('item',) onclick='show_gallery(0, carousel_images);return false;'

但是当我将打印语句更改为:

print(about.absolute_links)

我收到以下错误:

AttributeError: 'list' object has no attribute 'absolute_links'

知道为什么会这样吗?我该如何解决?

如果您需要更多信息,请告诉我。

谢谢

r.html.find('.item') returns 列表和列表没有属性 absolute_links。由于 .item 可能不仅可以找到一个节点,因此 find() 方法会按预期为您提供一个列表。

获取单个节点会很方便
about = r.html.find('.item')[0]

但是,这不会为您提供 about.absolute_links 的 img link ,因为这里找到的元素是 <a>,而不是 <img>

about = r.html.find('.item')[0]
img = about.xpath('//img')[0]
img.attrs['src'] # => '//cdn.pcpartpicker.com/static/forever/images/product/55aea2dd64e2e3a3e3b1d678048d8d76.256p.jpg'

您可以使用 BeautifulSoup 轻松抓取网页。

以下是抓取任何网页的步骤, 我们的计划应该是这样的:

  1. 使用requests库将页面的HTML加载到Python
  2. 设置BeautifulSoup处理HTML
  3. 找出哪些 HTML 标签包含所有标题
  4. 使用BeautifulSoup从HTML
  5. 中提取所有标题
  6. 很好地格式化它们

下面是代码-

import requests
from bs4 import BeautifulSoup
base_url = 'https://au.pcpartpicker.com/product/jLF48d'
r = requests.get(base_url)
soup = BeautifulSoup(r.text)
for image_src in soup.find_all("img"):
    print(image_src['src'])