python3+beautifulSoup4.6抓取某网站小说(一)爬虫初探

python

本次学习重点:

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抓取某网站小说(一)爬虫初探 的全部内容, 来源链接: utcz.com/z/389403.html

回到顶部