繁体   English   中英

Python Beautifulsoup奇怪的结果

[英]Python Beautifulsoup strange results

我试图将所有产品的标题都放在亚马逊搜索上。 它可以工作,但是结果只是让我回到了页眉和页脚亚马逊链接。

如果我检查亚马逊货源上的元素,则产品标题看起来就像是用锚包裹的''标签。 但是,在尝试抓取数据时似乎并非如此。

import requests
import re
from bs4 import BeautifulSoup

def adverts_trade(max_pages):
    page = 1
    while page <= max_pages:
        url = 'https://www.amazon.co.uk/s/ref=sr_pg_2?rh=n%3A560798%2Cn%3A560834%2Ck%3Acanon+lenses&page=' + str(page) + '&keywords=canon+lenses&ie=UTF8'
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, "html.parser")
        for link in soup.findAll('a'):
            #href = link.find('h2').get_text()
            print(link)
        page += 1

adverts_trade(10)

亚马逊不喜欢您从它们那里抓取数据。 如果将此行添加到代码中:

print(plain_text)

您会看到以下内容:

>     <!--
>             To discuss automated access to Amazon data please contact api-services-support@amazon.com.
>             For information about migrating to our APIs refer to our Marketplace APIs at
> https://developer.amazonservices.co.uk/ref=rm_5_sv, or our Product
> Advertising API at
> https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html/ref=rm_5_ac
> for advertising use cases.
>     -->

不要指望大多数站点能够简单地使用请求和bs4来抓取数据。 请使用其API或考虑使用Selenium或其他可以驱动实际浏览器的抓取工具。

您是否要从标签的title属性获取标题? 还是您想从标签的H2子级获得标题?

如果您是第一种方法,请尝试使用print(link['title'])而不是打印整个标签。 在beautifulSoup中,您可以将捕获的锚点的属性作为普通字典访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM