python3 爬虫之爬取糗事百科

简介:

闲着没事爬个糗事百科的笑话看看


python3中用urllib.request.urlopen()打开糗事百科链接会提示以下错误

http.client.RemoteDisconnected: Remote end closed connection without response

但是打开别的链接就正常,很奇怪不知道为什么,没办法改用第三方模块requests,也可以用urllib3模块,还有一个第三方模块就是bs4(beautifulsoup4)


最后经过不懈努力,终于找到了为什么,原因就是没有添加headers,需要添加headers,让网站认为是从浏览器发起的请求,这样就不会报错了。

1
2
3
4
5
6
7
8
9
10
import  urllib.request
 
url  =  'http://www.qiushibaike.com/8hr/page/5/'
  
user_agent  =  'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers  =  { 'User-agent' :user_agent}
 
request  =  urllib.request.Request(url,headers = headers)
html  =  urllib.request.urlopen(request)
print (html.read().decode())


requests模块安装和使用,这里就不说了

附上官方链接:http://docs.python-requests.org/en/master/

中文文档:http://cn.python-requests.org/zh_CN/latest/

1
2
3
4
5
6
7
8
9
10
11
>>> r  =  requests.get( 'https://api.github.com/user' , auth = ( 'user' 'pass' ))
>>> r.status_code
200
>>> r.headers[ 'content-type' ]
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u '{"type":"User"...'
>>> r.json()
{u 'private_gists' 419 , u 'total_private_repos' 77 , ...}


urllib3模块安装和使用,这里也不说了

附上官方链接:https://urllib3.readthedocs.io/en/latest/

1
2
3
4
5
6
7
>>>  import  urllib3
>>> http  =  urllib3.PoolManager()
>>> r  =  http.request( 'GET' 'http://httpbin.org/robots.txt' )
>>> r.status
200
>>> r.data
'User-agent: *\nDisallow: /deny\n'


bs4模块安装和使用

附上官方链接:https://www.crummy.com/software/BeautifulSoup/


好了,上面三个模块有兴趣的可以自己研究学习下,以下是代码:

爬取糗事百科的段子和图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import  requests
import  urllib.request
import  re
 
def  get_html(url):
     page  =  requests.get(url)
     return  page.text
 
def  get_text(html, file ):
     textre  =  re. compile (r 'content">\n*<span>(.*)</span>' )
     textlist  =  re.findall(textre,html)
     num  =  0
     txt  =  []
     for  in  textlist:
         num  + =  1
         txt.append( str (num) + '.' + i + '\n' * 2 )
     with  open ( file , 'w' ,encoding = 'utf-8' ) as f:
         f.writelines(txt)
 
def  get_img(html):
     imgre  =  re. compile (r '<img src="(.*\.JPEG)" alt=' ,re.IGNORECASE)
     imglist  =  re.findall(imgre,html)
     =  0
     for  imgurl  in  imglist:
         + =  1
         urllib.request.urlretrieve(imgurl,  '%s.jpg'  %  x)
 
html  =  get_html( "http://www.qiushibaike.com/8hr/page/2/" )
 
get_text(html, 'a.txt' )
get_img(html)


本文转自 baby神 51CTO博客,原文链接:http://blog.51cto.com/babyshen/1889553,如需转载请自行联系原作者
相关文章
|
2天前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!
|
9天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
41 3
|
9天前
|
数据采集 API 开发者
🚀告别网络爬虫小白!urllib与requests联手,Python网络请求实战全攻略
在网络的广阔世界里,Python凭借其简洁的语法和强大的库支持,成为开发网络爬虫的首选语言。本文将通过实战案例,带你探索urllib和requests两大神器的魅力。urllib作为Python内置库,虽API稍显繁琐,但有助于理解HTTP请求本质;requests则简化了请求流程,使开发者更专注于业务逻辑。从基本的网页内容抓取到处理Cookies与Session,我们将逐一剖析,助你从爬虫新手成长为高手。
27 1
|
18天前
|
数据采集 JavaScript 前端开发
构建你的首个Python网络爬虫
【9月更文挑战第8天】本文将引导你从零开始,一步步构建属于自己的Python网络爬虫。我们将通过实际的代码示例和详细的步骤解释,让你理解网络爬虫的工作原理,并学会如何使用Python编写简单的网络爬虫。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你打开网络数据获取的新世界。
|
18天前
|
数据采集 机器学习/深度学习 搜索推荐
Python爬虫技术基础与应用场景详解
本文介绍了爬虫技术的基本概念、原理及应用场景,包括数据收集、价格监测、竞品分析和搜索引擎优化等。通过一个实战案例展示了如何使用Python爬取电商网站的商品信息。强调了在使用爬虫技术时需遵守法律法规和道德规范,确保数据抓取的合法性和合规性。
|
21天前
|
数据采集 JavaScript 前端开发
打造你的Python爬虫:从基础到进阶
【9月更文挑战第5天】在数字信息泛滥的时代,掌握一项技能能让我们更好地筛选和利用这些资源。本文将带你了解如何用Python构建一个基本的网页爬虫,进而拓展到更复杂的数据抓取任务。无论你是编程新手还是有一定经验的开发者,跟随这篇文章的步伐,你将能够实现自动化获取网络数据的目标。准备好了吗?让我们一起潜入代码的世界,解锁新的可能!
|
1天前
|
数据采集
爬虫 正则 之 爬取糗事百科的照片
爬虫 正则 之 爬取糗事百科的照片
WK
|
25天前
|
数据采集 XML 安全
常用的Python网络爬虫库有哪些?
Python网络爬虫库种类丰富,各具特色。`requests` 和 `urllib` 简化了 HTTP 请求,`urllib3` 提供了线程安全的连接池,`httplib2` 则具备全面的客户端接口。异步库 `aiohttp` 可大幅提升数据抓取效率。
WK
38 1
|
26天前
|
数据采集 JavaScript 前端开发
构建简易Python爬虫:抓取网页数据入门指南
【8月更文挑战第31天】在数字信息的时代,数据抓取成为获取网络资源的重要手段。本文将引导你通过Python编写一个简单的网页爬虫,从零基础到实现数据抓取的全过程。我们将一起探索如何利用Python的requests库进行网络请求,使用BeautifulSoup库解析HTML文档,并最终提取出有价值的数据。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你打开数据抓取的大门。
|
27天前
|
数据采集 存储 数据库
构建你的第一个Python爬虫:从入门到实践
【8月更文挑战第31天】在数字时代的浪潮中,数据如同新时代的石油,而网络爬虫则是开采这些数据的钻头。本文将引导初学者了解并实现一个基础的网络爬虫,使用Python语言,通过实际代码示例,展示如何收集和解析网页信息。我们将一起探索HTTP请求、HTML解析以及数据存储等核心概念,让你能够快速上手并运行你的首个爬虫项目。