Python 美丽的汤蟒蛇芬德尔返回空列表
我正在努力学习亚马逊Alexa技能: 现在,我只是想得到技能的名称(Paypal),但出于某种原因,这会返回一个空列表。我已经看过了网站的inspect元素,我知道它应该给我一个名字,所以我不确定到底出了什么问题。我的代码如下: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
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
非常感谢你,这解决了我所有的问题!