python3 爬虫之爬取糗事百科

news/2024/7/19 11:13:59 标签: 爬虫, python, json

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


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

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

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


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

python">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/

python">>>> 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/

python">>>> 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/


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

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

python">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 i 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)
    x = 0
    for imgurl in imglist:
        x += 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)

很简单,欢迎大家吐槽,有兴趣的可以加群一块学习(219636001)


http://www.niftyadmin.cn/n/1412079.html

相关文章

在winform中使用程序读取和修改App.config里面的appSettings当中的Value值

一&#xff0c;命名空间 using System; using System.Configuration; using System.Xml; 二&#xff0c;方法 //读取Value值 public static string GetConfigString(string key) { // // TODO: 在此处添加构造函数逻辑 // return ConfigurationSettings.AppSettings[key]…

MySQL字符串进行四则运算以及比较

MySQL字符串进行加减乘除的运算 原文链接&#xff1a;https://www.jianshu.com/p/2ab2c0dc3cb5 在mysql当中,字符串类型间进行加减乘除运算的时候,会截取字符串以数字开头的那一部分数字进行运算,如果字符串前面没有数字,那么就只能截取的数值为0,那么进行加减的时候结果都是0,…

使用rpcbind和nfs服务的配置

NFSnetwork file system 网络文件系统nfs它允许一个系统在网络上与他人共享目录和文件&#xff0c;通过使用nfs&#xff0c;用户和程序可以像访问本地的文件一样去访问远程的文件比如我们有三台机器A B C&#xff0c;它们需要访问同一个目录&#xff0c;而这个目录中都是…

输入n个整数,输出其中最小的k个

2019独角兽企业重金招聘Python工程师标准>>> 题目描述 输入n个整数&#xff0c;输出其中最小的k个。输入描述 输入说明 1 输入两个整数 2 输入一个整数数组输出描述 输出一个整数数组输入例子 5 2 1 3 5 7 2输出例子 1 2算法实现 import java.util.Arrays; import…

像表格table一样轻松布局div层

下面是我翻译的内容&#xff0c;是根据我对文章的理解意译的&#xff0c;你就别挑哪里翻译的不对了&#xff0c;我的目的只是传达这个CSS技巧。 许多网页设计师都喜欢&#xff0c;将两个或者多个容器等高的并排放置&#xff0c;并在里面展示每个容器的内容&#xff0c;就象经典…

公钥,私钥,数字证书,签名,加密,认证,的概念区分(转)

加密和认证  首先我们需要区分加密和认证这两个基本概念。  加密是将数据资料加密&#xff0c;使得非法用户即使取得加密过的资料&#xff0c;也无法获取正确的资料内容&#xff0c;所以数据加密可以保护数据&#xff0c;防止监听攻击。其重点在于数据的安全性。身份认证是…

mybatis 源码分析(一)框架结构概览

本篇博客将主要对 mybatis 整体介绍&#xff0c;包括 mybatis 的项目结构&#xff0c;执行的主要流程&#xff0c;初始化流程&#xff0c;API 等各模块进行简单的串联&#xff0c;让你能够对 mybatis 有一个整体的把握。另外在 mybatis 源码的阅读过程中&#xff0c;如果不想写…

系统经常假死该如何解决

我在使用Windows XP操作系统时&#xff0c;经常会因为开启了一些软件或者软件运行出现错误而导致假死机&#xff0c;即鼠标无法点击桌面图标&#xff0c;无法进行任何操作。此时需要等待很长时间。请问如何才能解决这个问题&#xff1f; 【答】&#xff1a;你可以采用如下步骤…