请求-HTML抓取<a> tag image url (Requests-HTML, python)

时间:2018-12-18 06:53:16

标签: python html python-3.x python-requests-html

html to attempt to extract the cpu image from the following webpage,我发现图像网址位于类名称为Chrome inspect tool

的标记中

这是我的代码

from requests_html import HTMLSession
session = HTMLSession()

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

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

print(about)

此打印

  

元素'a'class =('item',)onclick ='show_gallery(0,carousel_images);返回false;'

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

print(about.absolute_links)

我收到以下错误:

  

AttributeError:“列表”对象没有属性“ absolute_links”

有什么想法为什么会发生这种情况以及如何解决?

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

谢谢

2 个答案:

答案 0 :(得分:0)

r.html.find('.item')返回一个列表,并且列表不具有属性absolute_links。由于.item可能不仅可以找到一个节点,因此find()方法可以按预期方式提供一个列表。

使用

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

但是,这不会为您提供about.absolute_links的img链接 ,因为此处找到的元素属于<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'

答案 1 :(得分:0)

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

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

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

下面是代码-

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'])