Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 美丽的汤蟒蛇芬德尔返回空列表_Python_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 美丽的汤蟒蛇芬德尔返回空列表

Python 美丽的汤蟒蛇芬德尔返回空列表,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我正在努力学习亚马逊Alexa技能: 现在,我只是想得到技能的名称(Paypal),但出于某种原因,这会返回一个空列表。我已经看过了网站的inspect元素,我知道它应该给我一个名字,所以我不确定到底出了什么问题。我的代码如下: request = Request(skill_url, headers=request_headers) response = urlopen(request) response = response.read() html = response.decode() s

我正在努力学习亚马逊Alexa技能:

现在,我只是想得到技能的名称(Paypal),但出于某种原因,这会返回一个空列表。我已经看过了网站的inspect元素,我知道它应该给我一个名字,所以我不确定到底出了什么问题。我的代码如下:

request = Request(skill_url, headers=request_headers)
response = urlopen(request)
response = response.read()
html = response.decode()
soup = BeautifulSoup(html, 'html.parser')

name = soup.find_all("h1", {"class" : "a2s-title-content"})

页面内容是用javascript加载的,所以不能只使用BeautifulSoup来刮取它。您必须使用另一个模块来模拟javascript执行

以下是一个例子:

from bs4 import BeautifulSoup as soup
from selenium import webdriver

url='YOUR URL'

driver = webdriver.Firefox()
driver.get(url)

page = driver.page_source
page_soup = soup(page,'html.parser')

containers = page_soup.find_all("h1", {"class" : "a2s-title-content"})
print(containers)
print(len(containers))

您还可以使用
chrome驱动程序
edge驱动程序
请参见尝试设置
用户代理
接受语言
HTTP头,以防止服务器向您发送验证码页面:

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0',
    'Accept-Language': 'en-US,en;q=0.5'
}

url = 'https://www.amazon.com/PayPal/dp/B075764QCX/ref=sr_1_1?dchild=1&keywords=paypal&qid=1604026451&s=digital-skills&sr=1-1'

soup = BeautifulSoup(requests.get(url, headers=headers).content, 'lxml')
name = soup.find("h1", {"class" : "a2s-title-content"})
print(name.get_text(strip=True))
印刷品:

PayPal

非常感谢你,这解决了我所有的问题!