1

html 尝试从以下网页中提取cpu图像

这是我的代码

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);return false;'

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

print(about.absolute_links)

我收到以下错误:

AttributeError:“列表”对象没有属性“绝对链接”

知道为什么会发生这种情况以及我该如何解决?

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

谢谢

4

2 回答 2

4

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

获得单个节点将很方便

about = r.html.find('.item')[0]

但是,这不会为您提供 img 链接about.absolute_links ,因为此处找到的元素是 of <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'
于 2018-12-18T07:09:22.603 回答
2

您可以使用 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'])
于 2018-12-18T07:10:01.907 回答