在python中,如果下一页链接在同一页面上出现两次,并且您只想在抓取页面后抓取其中一个,您将如何处理web抓取?
https://www.imdb.com/search/title/?groups=top_100&例子;= user_rating, desc& ref_ = adv_prv
下一页显示在列表的顶部和底部。
首先,找到包含所需元素的部分:
movies_list = driver.find_element('xpath', '//div[contains(@class, "lister-item mode-advanced")]')
next_page = movies_list.find_element('xpath', './/div[contains(@class, "lister-page-next next-page")]')
正如在这个回答中提到的,尽量选择更具体的元素。而不是使用.find_all()
或.select()
来得到ResultSet
,你当然可以切片到一个元素或者根据索引选择一个元素,
movie_soup.select('.next-page')[0].get('href')
头使用.find()
或.select_one()
,将只返回您搜索的元素的第一次出现
movie_soup.select_one('.next-page').get('href')
根据您的初始代码,您可以使用:
...
# Step 5: Parse the results object to movie_soup using the html parser.
movie_soup = BeautifulSoup(results.text, "html.parser")
nextpage = requests.get('https://www.imdb.com'+movie_soup.select_one('.next-page').get('href'))
# create soup for next url
nextsoup = BeautifulSoup(nextpage.content, 'html.parser')
...