我在从网站上抓取数据时遇到问题。问题可能出在visualstudio代码上,我使用的是“code runner”扩展。这是我第一次使用BeautifulSoup和selenium,所以问题也可能出在我的代码上。我上周五就开始了,在经历了一些困难之后,我在周六想出了一个解决办法。我的代码是:
import requests
from bs4 import BeautifulSoup, SoupStrainer
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
parcelID = 1014100000 #this is a random parcelID I grabbed from the site
url = 'https://www.manateepao.com/parcel/?parid={}'.format(parcelID)
driver = webdriver.Chrome()
driver.get(url)
html = driver.execute_script("return document.documentElement.outerHTML")
# was getting encoding error with print(html). replaced character that was giving me trouble
newHTML = html.replace(u"\u2715", "*")
soupFilter = SoupStrainer('div', {'id': 'ownerContentScollContainer'})
soup = BeautifulSoup(newHTML, 'html.parser', parse_only=soupFilter)
webparcelID = soup.find_all('b')
lColumn = soup.find_all('div', {'class' : 'col-sm-2 m-0 p-0 text-sm-right'})
rColumn = soup.find_all('div', {'class' : 'col-sm m-0 p-0 ml-2'})
parcel_Dict = {}
for i in range(len(lColumn)):
parcel_Dict[i] = {lColumn[i].string: rColumn[i].string}
# This is to test if I got any results or not
print(parcel_Dict)
driver.close()
driver.quit()
我希望每次刮一页都能找到:
包裹id。这是它自己的粗体,b,标记。
所有权和邮寄地址。所有权应始终位于地块目录[1],邮寄地址应始终位于地块目录[3]。
我运行代码,有时得到一个结果,有时得到一个空字典。
谢谢你的帮助。
1条答案
按热度按时间92dk7w1h1#
我通过添加以下代码行解决了自己的问题
我一直等到ownercontentscrollcontainer完全加载之后,才继续执行其余的代码。
这篇文章和这篇文章帮助我找出我可能会出错的地方。我使用本教程了解如何使用适当的xpath。