python3+beautifulSoup4.6抓取某网站小说(一)爬虫初探
本次学习重点:
1、使用urllib的request进行网页请求,获取当前url整版网页内容
2、对于多级抓取,先想好抓取思路,再动手
3、BeautifulSoup获取html网页中的指定内容
4、使用多线程,加快抓取速度
本次抓取不涉及反爬虫知识。
本章学习内容:
1、最简单的request请求网页,有注释,不细说了
# -*- coding: UTF-8 -*-
from urllib import request #获取request python2可以直接使用urllib2 # 直接请求
response = request.urlopen('http://www.baidu.com') # 获取状态码,如果是200表示获取成功
print(response.getcode()) # 读取内容
cont = response.read()
print(cont)
2、User-Agent模拟浏览器请求,这个是网站最简单的防爬虫程序,服务器通过Headers中的User Agent来判断是谁在访问。
当然,道高一尺魔高一丈,python的urllib库中的request可以设置Headers来模拟浏览器访问。
# -*- coding: UTF-8 -*-
from urllib import request if __name__ == "__main__":
#以CSDN为例,CSDN不更改User Agent是无法访问的
url = 'http://www.csdn.net/'
head = {}
#写入User Agent信息
head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
#创建Request对象
req = request.Request(url, headers=head)
#传入创建好的Request对象
response = request.urlopen(req)
#读取响应信息并解码
html = response.read()
print(html)
具体的User-Agent参考链接:https://blog.csdn.net/c406495762/article/details/60137956
3、https网站的访问,最简单的ssl配置
记得4月前第2步的代码还是可以访问的,但是前几天又运行这个代码不能访问了,报
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>
,搜索了下,发现是https导致的这个问题,又看了下csdn,发现变成https网站了。
又最以上代码中加了一行
context = ssl._create_unverified_context()
#传入创建好的Request对象
response = request.urlopen(req, context=context)
当然,则是最简单的绕过办法,一劳永逸,还是应该安装个证书。
本次解决办法参考文章:https://blog.csdn.net/bernieyangmh/article/details/74578759
完整代码如下:
# -*- coding: UTF-8 -*-
from urllib import request
import ssl if __name__ == "__main__":
#以CSDN为例,CSDN不更改User Agent是无法访问的
url = 'http://www.csdn.net/'
head = {}
#写入User Agent信息
head['User-Agent'] = 'Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19' #ssl._create_default_https_context = ssl._create_unverified_context('') #创建Request对象
req = request.Request(url, headers=head) context = ssl._create_unverified_context() #传入创建好的Request对象
response = request.urlopen(req, context=context)
#读取响应信息并解码
html = response.read()
print(html)
html = html.decode('utf-8')
# 打印信息
print(html)
python3+beautifulSoup4.6抓取某网站小说(一)爬虫初探的更多相关文章
- python3+beautifulSoup4.6抓取某网站小说(四)多线程抓取
上一篇多文章,是二级目录,根目录"小说",二级目录"作品名称",之后就是小说文件. 本篇改造了部分代码,将目录设置为根目录->作者目录->作品目录- ...
- python3+beautifulSoup4.6抓取某网站小说(三)网页分析,BeautifulSoup解析
本章学习内容:将网站上的小说都爬下来,存储到本地. 目标网站:www.cuiweijuxs.com 分析页面,发现一共4步:从主页进入分版打开分页列表.打开分页下所有链接.打开作品页面.打开单章内容. ...
- python3+beautifulSoup4.6抓取某网站小说(二)基础功能设计
本章学习内容:1.网页编码还原读取2.功能设计 stuep1:网页编码还原读取 本次抓取对象: http://www.cuiweijuxs.com/jingpinxiaoshuo/ 按照第一篇的代码来 ...
- Python3.x+Fiddler抓取APP数据
随着移动互联网的市场份额逐步扩大,手机APP已经占据我们的生活,以往的数据分析都借助于爬虫爬取网页数据进行分析,但是新兴的产品有的只有APP,并没有网页端这对于想要提取数据的我们就遇到了些问题,本章以 ...
- Python3.x:抓取百事糗科段子
Python3.x:抓取百事糗科段子 实现代码: #Python3.6 获取糗事百科的段子 import urllib.request #导入各类要用到的包 import urllib import ...
- Python多进程方式抓取基金网站内容的方法分析
因为进程也不是越多越好,我们计划分3个进程执行.意思就是 :把总共要抓取的28页分成三部分. 怎么分呢? # 初始range r = range(1,29) # 步长 step = 10 myList ...
- 使用BurpSuite抓取HTTPS网站的数据包
昨天面试,技术官问到了我如何使用BurpSuite抓取https网站的数据包,一时间没能回答上来(尴尬!).因为以前https网站的数据包我都是用Fiddler抓取的,Fiddlert自动帮我们配置好 ...
- 网页抓取:PHP实现网页爬虫方式小结
来源:http://www.ido321.com/1158.html 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现 ...
- 从urllib和urllib2基础到一个简单抓取网页图片的小爬虫
urllib最常用的两大功能(个人理解urllib用于辅助urllib2) 1.urllib.urlopen() 2. urllib.urlencode() #适当的编码,可用于后面的post提交 ...
随机推荐
- filter() 函数
描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 Tru ...
- hdu5396(区间DP)
题目意思: 给定一个表达式,运算符没有优先级,求不同顺序计算,所有可能的得到的结果之和. 由于运算符没有优先级,所以有多种顺序去计算,设d[i][j]表示[i,j]区间表达式通过不同顺序计算,所以可能 ...
- "cannot be resolved or is not a field"问题解决 (转载)
转自:http://blog.csdn.net/liranke/article/details/16803295 在修改了资源文件后,出现“"cannot be resolved or is ...
- Hardcoded string "下一步", should use @string resource警告 (转载)
转自:http://blog.csdn.net/iqv520/article/details/7579513 在布局文件中,文本的设置使用如下写法时会有警告:Hardcoded string &quo ...
- 如何替换某文件中的所有的特定字符?---linux sed命令(文本编辑命令) (转载)
转自:http://blog.csdn.net/year_9/article/details/20318407 sed是一个很好的文件处理工具,主要是以行为单位进行处理,可以将数据行进行替换.删除.新 ...
- E20180224-hm-xa
separator n. 分离器,分离装置; 防胀器; colon n. 冒号; <解>结肠; 科郎(哥斯达黎加货币单位); semicolon n. 分号;
- springboot(五) 加载配置文件优先级顺序
github代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service ...
- Linux之旅第一篇-目录结构及操作目录
一.引言 Linux对java开发来说也是一项必备的技能,因为项目基本都是部署在Linux操作系统的服务器中,虽然项目不一定需要我们去部署,但不管是自己测试环境部署,还是一些生产环境中日志的查看,Li ...
- 关于数学函数中的abs——————————————杭电2057——————————————————————————
数学函数中的abs当你用abs之后括号之中的数字就转换成了int格式.可能会丢失一些数据造成误差而且还会有, 警告: #include<stdio.h> #include<ma ...
- dllMain函数
Windows在加载DLL的时候,需要一个入口函数,就如同控制台或DOS程序需要main函数.Win32程序需要WinMain函数一样.一些例子中,DLL并没有提供DllMain函数,应用工程也能成功 ...