【发布时间】:2017-05-01 11:40:23
【问题描述】:
我正在尝试抓取 Airbnb,我有工作代码,但似乎他们已经更新了页面上的所有内容。它间歇性地返回正确的输出,然后有时会失败?它将随机返回第 3 页和第 17 页之间的 NoneType 错误。有没有办法让它继续尝试或者我的代码不正确?
for page in range(1,pages + 1):
#get page urls
page_url= url + '&page={0}'.format(page)
print(page_url)
#get page
# browser.get(page_url)
source = requests.get(page_url)
soup = BeautifulSoup(source.text,'html.parser')
#get all listings on page
div = soup.find('div',{'class':'row listing-cards-row'})
#loop through to get all info needed from cards
for pic in div.find_all('div',{'class':'listing-card-wrapper'}):
print(...)
最后一个 for 循环是我的错误开始发生的地方。这有时也会发生在我的其他功能中,有时它有时会起作用,有时却不起作用。我也已经尝试过 lxml 解析器了。
【问题讨论】:
-
我想找到一个解决方案,因为请求要快得多,但我求助于使用 selenium,现在一切似乎都运行正常。慢慢地……但正确地。
-
我注意到即使使用 selenium 也很奇怪的一件事是,每次我更改代码时,它都会在第一次出现与 requests 模块相同的错误时失败,但之后它可以完美运行。跨度>
-
您收到的错误是什么?您应该检查 page_url 是否被正确接收,例如:
source.raise_for_status(),然后再继续做汤。 -
Christos,我收到 find_all 的非类型错误。但是我在翻了几次汤之后终于发现,源代码标签大约每 2 次请求获取页面就会改变。这似乎是我的问题,因为我现在可以完美地使用请求和 Selenium。感谢您的回复!
标签: python selenium-webdriver web-scraping beautifulsoup python-requests