ValueError: Unsupported or invalid CSS selector: "unit-4" python
ValueError: Unsupported or invalid CSS selector: "unit-4" python
我刚刚尝试使用 python、Beautifulsoup 进行网络抓取,以便从购物网站获取 url 产品。
这里我提供我的简单代码:
import requests
from bs4 import BeautifulSoup
root_url = 'http://www.flipkart.com'
index_url = root_url + '/tablets'
def get_item_url():
response = requests.get(index_url)
soup = BeautifulSoup(response.text)
return [a.attrs.get('href') for a in soup.select('div.product-unit unit- 4 browse-product-section a[href^=/digiflip-pro-et701-tablet]')
print(get_item_url())
通过运行这个程序产生了这样的错误:
File "C:\Python27\lib\site-packages\bs4\element.py", line 1300, in select
'Unsupported or invalid CSS selector: "%s"' % token)
ValueError: Unsupported or invalid CSS selector: "unit-4"
如何解决这个错误?
查看 Beautiful Soup 文档,我看到在 select()
中的属性之间放置空格会搜索标签 beneath 其他标签。因此,您的 select()
正在寻找 div.product-unit
下方某处名为 unit-4
的属性,然后它正在 unit-4
下方寻找 browse-product-section
。不存在这样的属性,因此 returns 错误。
您的 select()
中的属性实际上是该网页上出现的 HTML 类 的名称,因此您必须附加一个 .
给他们每个人找到他们。但是,我认为您真正要寻找的更像是:
return [a.attrs.get('href') for a in soup.select('div.product-unit a[href^=/digiflip-pro-et701-tablet]')]
在 div 和 returns
下面寻找 href
['/digiflip-pro-et701-tablet/p/itme27y5v2ws5cfm?pid=TABDWMDPGHPNYND7', '/digiflip-pro-et701-tablet/p/itme27y5v2ws5cfm?pid=TABDWMDPGHPNYND7', '/digiflip-pro-et701-tablet/p/itme27y5v2ws5cfm?pid=TABDWMDPGHPNYND7&ref=70ca8997-80a5-412d-9b94-6d5fb55f1277', '/digiflip-pro-et701-tablet/p/itme27y5v2ws5cfm?pid=TABDWGBMYSEMWHUY&ref=70ca8997-80a5-412d-9b94-6d5fb55f1277']
顺便说一句,您也可以将 div.product-unit
替换为 unit-4
,或者甚至单独执行 select('a[href^=/digiflip-pro-et701-tablet]')
,您会得到相同的输出。
我刚刚尝试使用 python、Beautifulsoup 进行网络抓取,以便从购物网站获取 url 产品。
这里我提供我的简单代码:
import requests
from bs4 import BeautifulSoup
root_url = 'http://www.flipkart.com'
index_url = root_url + '/tablets'
def get_item_url():
response = requests.get(index_url)
soup = BeautifulSoup(response.text)
return [a.attrs.get('href') for a in soup.select('div.product-unit unit- 4 browse-product-section a[href^=/digiflip-pro-et701-tablet]')
print(get_item_url())
通过运行这个程序产生了这样的错误:
File "C:\Python27\lib\site-packages\bs4\element.py", line 1300, in select
'Unsupported or invalid CSS selector: "%s"' % token)
ValueError: Unsupported or invalid CSS selector: "unit-4"
如何解决这个错误?
查看 Beautiful Soup 文档,我看到在 select()
中的属性之间放置空格会搜索标签 beneath 其他标签。因此,您的 select()
正在寻找 div.product-unit
下方某处名为 unit-4
的属性,然后它正在 unit-4
下方寻找 browse-product-section
。不存在这样的属性,因此 returns 错误。
您的 select()
中的属性实际上是该网页上出现的 HTML 类 的名称,因此您必须附加一个 .
给他们每个人找到他们。但是,我认为您真正要寻找的更像是:
return [a.attrs.get('href') for a in soup.select('div.product-unit a[href^=/digiflip-pro-et701-tablet]')]
在 div 和 returns
下面寻找 href['/digiflip-pro-et701-tablet/p/itme27y5v2ws5cfm?pid=TABDWMDPGHPNYND7', '/digiflip-pro-et701-tablet/p/itme27y5v2ws5cfm?pid=TABDWMDPGHPNYND7', '/digiflip-pro-et701-tablet/p/itme27y5v2ws5cfm?pid=TABDWMDPGHPNYND7&ref=70ca8997-80a5-412d-9b94-6d5fb55f1277', '/digiflip-pro-et701-tablet/p/itme27y5v2ws5cfm?pid=TABDWGBMYSEMWHUY&ref=70ca8997-80a5-412d-9b94-6d5fb55f1277']
顺便说一句,您也可以将 div.product-unit
替换为 unit-4
,或者甚至单独执行 select('a[href^=/digiflip-pro-et701-tablet]')
,您会得到相同的输出。