【发布时间】:2018-09-14 09:07:38
【问题描述】:
我试图从 fareham.gov.uk 网页上抓取一个应用程序,但每次我尝试它都会返回一个错误而不是参考号。有人可以帮我解决这个问题吗?我是网络抓取的新手,每当我尝试用谷歌搜索修复时都没有任何效果。
错误:
Traceback (most recent call last):
File "C:\Users\DBaldwin\Desktop\sel.py", line 39, in <module>
div = soup.select('<div Class="docGridRow"><div Class="detailsCells detailsFieldNames">Reference</div><div Class="detailsCells detailsValues">')
File "C:\Users\DBaldwin\Anaconda3\lib\site-packages\bs4\element.py", line 1477, in select
'Unsupported or invalid CSS selector: "%s"' % token)
ValueError: Unsupported or invalid CSS selector: "<div"
代码:
import time
import urllib.request
from bs4 import BeautifulSoup
from selenium import webdriver
url = "http://www.fareham.gov.uk/casetrackerplanning/applicationsearch.aspx"
driver = webdriver.Chrome(executable_path=r"C:\Users\DBaldwin\Desktop\chromedriver.exe")
driver.get(url)
driver.find_element_by_id("lnkAllowCookies").click()
def rerun():
driver.find_element_by_id("BodyPlaceHolder_uxLinkButtonShowAdvancedSearch").click()
time.sleep(3)
driver.find_element_by_id("uxStartDateDecisionTextBox").click()
driver.find_element_by_id("uxStartDateDecisionTextBox").clear()
driver.find_element_by_id("uxStartDateDecisionTextBox").send_keys("1/8/2018")
driver.find_element_by_id("uxStopDateDecisionTextBox").click()
driver.find_element_by_id("uxStopDateDecisionTextBox").clear()
driver.find_element_by_id("uxStopDateDecisionTextBox").send_keys("308/2018")
driver.find_element_by_id("BodyPlaceHolder_uxButtonSearch").click()
time.sleep(3)
rerun()
elements = driver.find_elements_by_class_name("searchResultsCell")
for e in elements:
e.click()
newUrl = driver.current_url
go = urllib.request.urlopen(newUrl)
soup = BeautifulSoup(go.read(), "html.parser")
div = soup.select('<div Class="docGridRow"><div Class="detailsCells detailsFieldNames">Reference</div><div Class="detailsCells detailsValues">')
test = div[0].get_text()
print(test)
driver.back()
rerun()
print("Worked???")
【问题讨论】:
-
你看过bs4 documentation吗?
select与 css 选择器合成器一起使用,而不是 html。 -
那我该如何解决
-
我真的不明白你在这里想做什么。您要选择什么?
-
div = soup.select('div.docGridRow)? -
Daniel Roseman 我正在尝试在该网站上的一个应用程序上抓取参考号,如果您转到变量“url”中的链接,它会询问日期。在开始时输入 1/8/2018,在结束时输入 30/8/2018,单击第一个应用程序,您将看到参考 ID 和其他内容,我正在尝试让它刮掉
标签: python selenium web-scraping beautifulsoup