本次学习重点:

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抓取某网站小说(一)爬虫初探的更多相关文章

  1. python3+beautifulSoup4.6抓取某网站小说(四)多线程抓取

    上一篇多文章,是二级目录,根目录"小说",二级目录"作品名称",之后就是小说文件. 本篇改造了部分代码,将目录设置为根目录->作者目录->作品目录- ...

  2. python3+beautifulSoup4.6抓取某网站小说(三)网页分析,BeautifulSoup解析

    本章学习内容:将网站上的小说都爬下来,存储到本地. 目标网站:www.cuiweijuxs.com 分析页面,发现一共4步:从主页进入分版打开分页列表.打开分页下所有链接.打开作品页面.打开单章内容. ...

  3. python3+beautifulSoup4.6抓取某网站小说(二)基础功能设计

    本章学习内容:1.网页编码还原读取2.功能设计 stuep1:网页编码还原读取 本次抓取对象: http://www.cuiweijuxs.com/jingpinxiaoshuo/ 按照第一篇的代码来 ...

  4. Python3.x+Fiddler抓取APP数据

    随着移动互联网的市场份额逐步扩大,手机APP已经占据我们的生活,以往的数据分析都借助于爬虫爬取网页数据进行分析,但是新兴的产品有的只有APP,并没有网页端这对于想要提取数据的我们就遇到了些问题,本章以 ...

  5. Python3.x:抓取百事糗科段子

    Python3.x:抓取百事糗科段子 实现代码: #Python3.6 获取糗事百科的段子 import urllib.request #导入各类要用到的包 import urllib import ...

  6. Python多进程方式抓取基金网站内容的方法分析

    因为进程也不是越多越好,我们计划分3个进程执行.意思就是 :把总共要抓取的28页分成三部分. 怎么分呢? # 初始range r = range(1,29) # 步长 step = 10 myList ...

  7. 使用BurpSuite抓取HTTPS网站的数据包

    昨天面试,技术官问到了我如何使用BurpSuite抓取https网站的数据包,一时间没能回答上来(尴尬!).因为以前https网站的数据包我都是用Fiddler抓取的,Fiddlert自动帮我们配置好 ...

  8. 网页抓取:PHP实现网页爬虫方式小结

    来源:http://www.ido321.com/1158.html 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现 ...

  9. 从urllib和urllib2基础到一个简单抓取网页图片的小爬虫

    urllib最常用的两大功能(个人理解urllib用于辅助urllib2) 1.urllib.urlopen() 2. urllib.urlencode()   #适当的编码,可用于后面的post提交 ...

随机推荐

  1. Windows代码heap内存分析实战

    知识这东西有时候很奇怪,每次当你重新审视他的时候可能都会有新的收获.最近为了研究一个内存相关的问题,把windows heap相关的内容又复习了一遍,收获不小,记录一下,希望有朋友使用的时候少走些弯路 ...

  2. 客户端与服务器持续同步解析(轮询,comet,WebSocket)

    在B/S模型的Web应用中,客户端常常需要保持和服务器的持续更新.这种对及时性要求比较高的应用比如:股票价格的查询,实时的商品价格,自动更新的twitter timeline以及基于浏览器的聊天系统( ...

  3. 洛谷 P2754 星际转移问题【最大流】

    判无解的方法非常粗暴:快T了还是没有合法方案,就是无解. 然后枚举答案,对于每一天都建一套太空站,s连地球,t连月球,上一天的太空站连向这一天的太空站,流量均为inf.然后对于每个飞船,上一天的停靠站 ...

  4. 报错Cannot determine embedded database driver class for database type NONE解决方法

    由于我不需要数据库,启动springboot报错: Cannot determine embedded database driver class for database type NONE If ...

  5. Hdu 5416 CRB and Tree (bfs)

    题目链接: Hdu 5416 CRB and Tree 题目描述: 给一棵树有n个节点,树上的每条边都有一个权值.f(u,v)代表从u到v路径上所有边权的异或值,问满足f(u,v)==m的(u, v) ...

  6. C# winform与Javascript的相互调用[转]

    原文链接<html> <head> <meta http-equiv="Content-Language" content="zh-cn&q ...

  7. Coprime Conundrum 容斥原理

    https://www.hackerrank.com/contests/hourrank-13/challenges/arthur-and-coprimes 我们可以枚举每一个p在[2, sqrt(n ...

  8. 自动判断手机版和pc版

    <html><head><title>欢迎来到手机版</title><script>var ua = navigator.userAgent ...

  9. 冒泡排序算法和简单选择排序算法的js实现

    之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ...

  10. Sql中创建事务处理

    Create Procedure MyProcedure AS Begin Set NOCOUNT ON; Set XACT_ABORT ON; --这句话非常重要 begin try Begin T ...