Python中的Web爬虫错误-TypeError:'NoneType'对象不可调用

时间:2019-11-25 16:36:50

标签: python web-scraping beautifulsoup

当前正在使用beautifulsoap构建网络刮板,以便通过提交邮政编码获得车身修理厂位置的列表。 (Website

当我指定一个元素的ID(“ dl-zipcode”)并尝试查看其是否有效时,它一直在下面说一个错误:

  

search_box = soup.find_element_by_id(“ dl-zipcode”)

     

TypeError:“ NoneType”对象不可调用

我已经搜索了几个小时的答案,并决定问一下,因为找不到解决方法。

下面是我的代码:

import requests
from bs4 import BeautifulSoup

URL = 'https://owners.honda.com/collision/profirstbodyshop/'
headers = {"User-Agent": 'Mozilla/5.0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~'}

page = requests.get(URL, headers=headers)

soup = BeautifulSoup(page.content, 'html.parser')


myList = [28012, 28011]

results = []

for i in myList:
    search_box = soup.find_element_by_id("dl-zipcode")
    search_box.send_keys(i)
    search_box.submit()

enter image description here

2 个答案:

答案 0 :(得分:0)

将解析器更改为lxml应该可以解决您的问题,此外,您应该传递.text而不是.content。

soup = BeautifulSoup(page.text, 'lxml')

如果您想查看html.parser和lxml造成的差异,请查看diagnose(): https://www.crummy.com/software/BeautifulSoup/bs4/doc/#diagnose

答案 1 :(得分:0)

您必须找到表的输入并提交请求,在这种情况下,它应该是您要查找的以下行:

<input data-val="true" data-val-regex="You must enter a valid zip code." data-val-regex-pattern="^\d{5}(-\d{4})?$" data-val-required="The Zip field is required." id="from-zip" name="Zip" type="text" value="" />

然后基于此提交。希望对您有所帮助。一个例子在这里:  Fill and submit html form