python抓取动态网页(爬取浏览器click事件也执行click事件执行)
优采云 发布时间: 2022-02-14 00:20python抓取动态网页(爬取浏览器click事件也执行click事件执行)
最近突然想到爬百度的学术参考。大家可以看看我之前的博客: 但是如果用这种方法,太痛苦了,需要手动复制粘贴,所以这里介绍一下使用selenium来实现这个。函数,粘贴代码:
#-*- coding:utf-8 -*-
from selenium import webdriver
import time
from bs4 import BeautifulSoup
#拼接url
titlename='Application of biosorption for the removal of organic pollutants: a review'
url_name=titlename.split(' ')
url='http://xueshu.baidu.com/s?wd='+'+'.join(url_name)
#打开Firefox
diver=webdriver.Firefox()
diver.get(url)
#防止引用太多,不断click,直到参考文献下不存在‘加载更多’
try:
for i in range(0,50):
# 等待网站加载完成
time.sleep(0.2)
diver.find_elements_by_class_name('request_situ')[1].click()
except:
print '********************************************************'
#等到加载完成获取网页源码
time.sleep(10)
#使用BeautifulSoup获取参考文献
soup=BeautifulSoup(diver.page_source,'lxml')
items=soup.find('div',{'class':'con_reference'}).find_all('li')
for i in items:
print i.find('a').get_text()
#关闭网页
diver.close()
注意:
代码标记为红色。因为这个错误,我花了很长时间。
我遇到了一个问题。每次第一次抓取,click事件都没有响应。我可以用断点检查,发现是OK的,然后就OK了。我不知道为什么会这样。
Chrome 浏览器点击事件不执行
如果不想看到浏览器出现,可以使用 diver=webdriver.PhantomJS() 代替 diver=webdriver.Firefox()
以上的基础是安装PhantomJS、geckodriver.exe