gpt4 book ai didi

python - BeautifulSoup 有时会给出异常(exception)

转载 作者:行者123 更新时间:2023-12-04 21:40:39 26 4
gpt4 key购买 nike

奇怪的是,有时 BeautifulSoup 对象确实提供了所需的数据,但有时我会收到类似或 listindex error 的错误。或 out of rangenonetype object does not have attribute findNext() ,这是嵌套在其他元素中的数据。

这是代码:

url = 'http://www.computerstore.nl/product/470130/category-208983/asrock-z97-extreme6.html'
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text)

a = soup.find(text=('Socket')).find_next('dd').string

print(a)

最佳答案

实际问题是单元格值并不总是Socket , 有时 它被制表符或空格包围。而不是检查确切的 text匹配,通过 compiled regular expression pattern :

import re

soup.find(text=re.compile('Socket')).find_next('dd').get_text(strip=True)

总是打印 1150 .

解释我使用过的“有时”这个词(感谢@carpetsmoker 在评论中的最初提议):

如果您打开页面,然后清除 cookie 并刷新页面,您可能会看到同一页面的两种不同外观:




如您所见,页面上的块排列方式不同。因此,同一个页面有两种不同的外观和 HTML 源代码 - 您看到的是 AB-testing技术:

In marketing and business intelligence, A/B testing is jargon for a randomized experiment with two variants, A and B, which are the control and treatment in the controlled experiment. It is a form of statistical hypothesis testing with two variants leading to the technical term, Two-sample hypothesis testing, used in the field of statistics.



换句话说,他们正在试验产品页面并收集统计数据,例如点击率、销售数量等。

仅供引用,这是我目前的工作代码:
import re

from bs4 import BeautifulSoup
import requests

session = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
session.get('http://www.computerstore.nl', headers=headers)

response = session.get('http://www.computerstore.nl/product/470130/category-208983/asrock-z97-extreme6.html', headers=headers)
soup = BeautifulSoup(response.content)
print(soup.find(text=re.compile('Socket')).find_next('dd').get_text(strip=True))

关于python - BeautifulSoup 有时会给出异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27487467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com