selenium+beautifulsoup+pandas爬取百度学术

本文介绍了如何结合selenium、beautifulsoup和pandas爬取百度学术信息。由于直接使用requests无法获取完整详情,故采用selenium模拟浏览器行为,解析页面并获取真实的详情页url。通过selenium请求详情页,再利用beautifulsoup提取图书详情,最后用pandas存储数据。注意处理可能出现的空值和异常,确保脚本稳定运行。
摘要由CSDN通过智能技术生成

环境

requirements:
BeautifulSoup
selenium(with headless Chrome)
pandas

BeautifulSoup用来解释html,用selenium代替requests进行请求(原因后面会讲到),用pandas存储

搜索页url

打开百度学术输入关键字回车后可以看到当前的url是

http://xueshu.baidu.com/s?wd=自然语言处理&rsv_bp=0&tn=SE_baiduxueshu_c1gjeupa&rsv_spt=3&ie=utf-8&f=8&rsv_sug2=0&sc_f_para=sc_tasktype%3D%7BfirstSimpleSearch%7D

翻页后

http://xueshu.baidu.com/s?wd=自然语言处理&pn=10&tn=SE_baiduxueshu_c1gjeupa&ie=utf-8&sc_f_para=sc_tasktype%3D%7BfirstSimpleSearch%7D&sc_hit=1

很容易发现,实质上请求的url应该是http://xueshu.baidu.com/s?wd=自然语言处理&pn=x(x为条数)
复制进地址框中打开发现跟刚才的是一样的,ok

在这里插入图片描述
于是可以根据这个规律来构造要请求的url

# 构造请求url
url = 'http://xueshu.baidu.com/s?wd=自然语言处理&pn='
urls = []
for i in range(0, 210, 10):
    urls.append(url + str(i))

详情页url

接下来这一部分就有一些难度了。
首先还是老办法用开发者工具看看链接所在的标签
ps:点击开发者工具左上角的鼠标工具可以快速定位页面中的元素!
在这里插入图片描述
一开始觉得ok很好办 用request做就行 贴一下用request的代码

# 请求头
headers = {
   
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko)'
                  'Chrome/65.0.3325.162 Safari/537.36'
}
# 请求
html = requests.get(urls[0], headers)
html.encoding = 'utf-8'
soup = BeautifulSoup(html.text, 'lxml')
# print(html.text)

#获取书的详情url
#匹配所有的url
book = soup.find_all(name='a', href=re.compile('/s.*?'),
                     attrs={
   'target': '_blank', 'data-click': "{'button_tp':'title'}"})
books = []
for item in book:
    book_url = item.get('href')
    books.append
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值