Python BeautifulSoup html.parser无法正常工作

时间:2018-09-12 22:57:00

标签: javascript python beautifulsoup html-parsing

我有一个脚本可以从Amazon处获取图书信息,该脚本以前曾经成功运行过,但今天却失败了。我无法弄清楚到底出了什么问题,但我假设它与解析器或Javascript有关。我正在使用以下代码。

from bs4 import BeautifulSoup
import requests

response = requests.get('https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dstripbooks&field-keywords=9780307397980',headers={'User-Agent': b'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'})
html = response.content
soup = BeautifulSoup(html, "html.parser")
resultcol = soup.find('div', attrs={'id':'resultsCol'})

以前,我曾经在resultcol中获取数据,但是现在它为空白。当我检查html时,我看到的标签是<div id="resultsCol" class=\'\' >。但是soup中没有此文本。谁能帮我调试一下吗?以前它工作得很好,但现在却不行。

2 个答案:

答案 0 :(得分:1)

您需要等待直到页面完全加载。您必须使用phantomJs来确保页面正确加载。

我可以使用以下代码来获取正确的元素。

import requests
from bs4 import BeautifulSoup
from selenium import webdriver

url = ("https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3D"
       "stripbooks&field-keywords=9780307397980")

browser = webdriver.PhantomJS()
browser.get(url)
html = browser.page_source
soup = BeautifulSoup(html, 'lxml')
resultcol = soup.find('img', attrs={'class': 's-access-image'})
print resultcol

答案 1 :(得分:0)

删除标题,它应该可以工作。

from bs4 import BeautifulSoup
import requests
response = requests.get('https://www.amazon.com/s/ref=nb_sb_noss?url=search-    alias%3Dstripbooks&field-keywords=9780307397980')
html = response.content
soup = BeautifulSoup(html, "html.parser")
resultcol = soup.find('div', attrs={'id':'resultsCol'})`