Python网络爬虫(七):百度文库文章爬取器
在用前面的方法爬取百度文库的文章时,发现只能爬取已显示出来的几页文章,而对于没有显示的页数则无法获得其内容。如果要完整的看到整篇文章,需要手动地点击底下的“继续阅读”,使所有的页数都显示出来。
查看元素后发现,展开前的html和展开后的html是不同的,前者隐藏页的的文本内容是没有显示的。但是爬虫获得的是展开前的html文件,所以也就只能获得部分内容。
本文使用了一个工具来自动化操作网页,获得展开后的html。
使用Selenium自动化工具来操控浏览器
- Selenium的安装
pip3 install Selenium - 安装chromedriver.exe
这里踩了很多坑。
驱动下载地址:
http://chromedriver.storage.googleapis.com/index.html
一定要下载与chrome版本相匹配的chromedriver,而且注意并不是版本号越大的驱动对应最新的chrome浏览器,要仔细查看notes.txt文件看对应关系。比如我的chrome是v62,支持的chromedriver是v2.33。 - 将安装程序拖到C:\Program Files (x86)\Google\Chrome\Application\目录下
- 设置环境变量:win+r,输入sysdm.cpl,高级,环境变量,设置Path为C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe。或者在调用chrome时指定这个路径。
browser = webdriver.Chrome(‘C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe’) - 使用selenium自动操作网页:
from selenium import webdriveroptions = webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.baidu.com/')
html = driver.page_source
完整代码
# contents_bdwk.py
from selenium import webdriver
from bs4 import BeautifulSoup# ***selenium 自动操作网页***
options = webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36"') #设置设备代理
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://wenku.baidu.com/view/aa31a84bcf84b9d528ea7a2c.html') #此处填写文章地址
page = driver.find_element_by_xpath("//div[@id='html-reader-go-more']")
driver.execute_script('arguments[0].scrollIntoView();', page) #拖动网页到可见的元素去
nextpage = driver.find_element_by_xpath("//span[@class='moreBtn goBtn']")
nextpage.click() #进行点击下一页操作# ***对打开的html进行分析***
html = driver.page_source
bf1 = BeautifulSoup(html, 'lxml')# 获得文章标题
title = bf1.find_all('h1', class_='reader_ab_test with-top-banner')
bf2 = BeautifulSoup(str(title), 'lxml')
title = bf2.find('span')
title = title.get_text()
filename = title + '.txt'# 获得文章内容
texts_list = []
result = bf1.find_all('div', class_='ie-fix')
for each_result in result:bf3 = BeautifulSoup(str(each_result), 'lxml')texts = bf3.find_all('p')for each_text in texts:texts_list.append(each_text.string)
contents = ''.join(texts_list).replace('\xa0', '')# ***保存为.txt文件
with open(filename, 'a', encoding='utf-8') as f:f.writelines(contents)f.write('\n\n')
Python网络爬虫(七):百度文库文章爬取器相关推荐
- Python网络爬虫(九):爬取顶点小说网站全部小说,并存入MongoDB
前言:本篇博客将爬取顶点小说网站全部小说.涉及到的问题有:Scrapy架构.断点续传问题.Mongodb数据库相关操作. 背景: Python版本:Anaconda3 运行平台:Windows IDE ...
- 爬虫python爬取页面请求_03 Python网络爬虫第三弹《爬取get请求的页面数据》,urllib...
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- python网络爬虫:股票数据定向爬取
百度股票(https://gupiao.baidu.com/stock/)属于静态网页数据,适合定向数据爬取:新浪股票(http://finance.sina.com.cn/stock/)数据存取在j ...
- Python网络爬虫3 - 生产者消费者模型爬取某金融网站数据
博客首发于www.litreily.top 应一位金融圈的朋友所托,帮忙写个爬虫,帮他爬取中国期货行业协议网站中所有金融机构的从业人员信息.网站数据的获取本身比较简单,但是为了学习一些新的爬虫方法和技 ...
- Python网络爬虫:利用正则表达式方法爬取‘’豆瓣读书‘’中‘’新书速递‘’条目
1.简述:正则表达式是爬虫的方法之一,这里利用Requests库进行爬取,尽管Urllib也能进行爬取,但过程过于繁琐,在了解Urllib的爬取过程后,没有进行实战演练,但在学习了Requests的爬 ...
- Python网络爬虫,Appuim+夜神模拟器爬取得到APP课程数据
一.背景介绍 随着生产力和经济社会的发展,温饱问题基本解决,人们开始追求更高层次的精神文明,开始愿意为知识和内容付费.从2016年开始,内容付费渐渐成为时尚. 罗辑思维创始人罗振宇全力打造" ...
- Python网络爬虫之基本项目:爬取网易新闻排行榜
1. 最基本的抓取 抓取大多数情况属于get请求,即直接从对方服务器上获取数据. 首先,Python中自带urllib及urllib2这两个模块,基本上能满足一般的页面抓取.另外,requests也是 ...
- 利用Python进行百度文库内容爬取(二)——自动点击预览全文并爬取
本文是衔接上一篇:<利用Python进行百度文库内容爬取(一)>. 上回说到我们在对百度文库进行爬虫时,需要模拟手机端来进行登录,这样固然可以对文章进行爬取,但是很多时候并不是非常智能的翻 ...
- Python新手爬虫训练小项目《爬取彼岸图网》(超详细讲解版)
Python新手爬虫训练小项目<爬取彼岸图网>(超详细讲解版) 这是我的第一篇文章,作为一名新手爬虫,这个算是我这几天来的努力成果,虽然代码寥寥几行但花费了大半天,新手上路还是不能只看视频 ...
最新文章
- 都2020年,开发制作微信小程序商城,需要准备什么资料?应该不会不知道吧!
- 初识Service Worker
- Ubuntu系统的安装
- Linux学习:文件描述符表
- C++11新特性- for语句
- Linux管理磁盘配额
- FD.io——助你创新更高效、更灵活的报文处理方案
- 软考中级-数据库系统工程师复习知识点汇总
- pyraformer: low-complexity pyramidal attention for long-range time series modeling and forecasting
- html5ify插件,漂亮的jQuery对话框插件Dialogify
- python中时间模块datetime总结
- win10系统vs2019 mpich配置
- 微信小程序_文档_08_组件_媒体组件_地图_画布_开放能力
- 如何规划、建设你的数据库架构
- macbarcode软件_条形码生成器 for mac-条形码生成器 mac版下载V17.0__西西软件下载
- 计算机基础课教学计划,计算机基础(教学计划)
- ACS服务器的备份和恢复
- Cocos状态机与缓动系统
- ORACLE使用中的常见、实用的问题
- 次梯度(坐标法)、迭代加权最小二乘、ADMM求解Lasso