spider_爬取内涵吧的段子(二级深度爬取)
'''
爬取内涵吧段子所有笑话(带标题,作者)
总结:解码上,使用gbk2312编码的,我们可以采取gbk解码。 不会报错
'''
from fake_useragent import FakeUserAgent
import requests
import chardet
import re
from lxml import etree
import os
import time
# 定义一个url
def neiHan():
num=1
base_url = 'https://www.neihanba.com/dz/'
while True:
base_headers = {
'User-Agent':FakeUserAgent().random
}
base_bytesHtml = requests.get(url=base_url,headers=base_headers).content
# print(base_bytesHtml)
# 判断网页编码格式 返回一个列表
result = chardet.detect(base_bytesHtml)
# print(result)
# 解码 原网站使用的 是gbk2312编码。 我们碰到诸如此类的可以使用,gbk解码。
# 有兴趣的同学可以自行百度两者的关系
base_html = base_bytesHtml.decode('gbk')
# print(base_html)
# 构造树状图
base_html=etree.HTML(base_html)
# 使用xpath提取url列表
urls = base_html.xpath('/html/body/div[1]/div/div[1]/ul/li[*]/h4/a/@href')
# print(urls)
for url in urls:
# print(url)
url = 'https://www.neihanba.com'+url
headers = {
'User-Agent':FakeUserAgent().random
}
# 请求网页
bytesHtml=requests.get(url,headers=headers).content
# 解码
html=bytesHtml.decode('gbk')
# print(html)
# 提取内容(标题) 使用正则
# 定义正则表达式(url)
title = r'<h1>(.*?)</h1>'
# 编译
title = re.compile(title,re.S)
# 正则提取标题
title = re.findall(title,html)
print(title)
# 定义正则提取内容
detail = r'<p>(.*?)</p>'
# 编译
detail = re.compile(detail,re.S)
# 进行提取
detail = re.findall(detail,html)
# # 处理字符串,去掉多余的空格,替换&rdquo为右引号。使用正则sub方法
# detail = re.sub('&ldquo','"',detail[0])
# 处理字符串使用replace方法
detail_list = []
detail=detail[0].replace('&ldquo','"').replace('&rdquo','"').strip()
detail_list.append(detail)
# print(detail)
# print(detail_list)
# 保存成txt文本
dir = os.makedirs("./neibanba")
with open(dir+title[0].txt,'w',encoding='utf-8') as f:
f.write(detail)
# 设置延时
time.sleep(1.5)
# 判断是否有下一页,如果没有循环停止,使用的是尾页判断。
res=base_html.find('<a href="/dz/list_100.html">尾页</a>')
# 如果没有
if res == -1:
break
num+=1
# print(num)
base_url = 'https://www.neihanba.com/dz/list_{}.html'.format(num)
if __name__ == '__main__':
neiHan()
spider_爬取内涵吧的段子(二级深度爬取)的更多相关文章
- Python爬虫实战三之爬取嗅事百科段子
一.前言 俗话说,上班时间是公司的,下班了时间才是自己的.搞点事情,写个爬虫程序,每天定期爬取点段子,看着自己爬的段子,也是一种乐趣. 二.Python爬取嗅事百科段子 1.确定爬取的目标网页 首先我 ...
- scrapy基于请求传参实现深度爬取
请求传参实现深度爬取 请求传参: 实现深度爬取:爬取多个层级对应的页面数据 使用场景:爬取的数据没有在同一张页面中 在手动请求的时候传递item:yield scrapy.Request(url,ca ...
- Python爬虫之利用正则表达式爬取内涵吧
首先,我们来看一下,爬虫前基本的知识点概括 一. match()方法: 这个方法会从字符串的开头去匹配(也可以指定开始的位置),如果在开始没有找到,立即返回None,匹配到一个结果,就不再匹配. 我们 ...
- Python爬虫-爬取糗事百科段子
闲来无事,学学python爬虫. 在正式学爬虫前,简单学习了下HTML和CSS,了解了网页的基本结构后,更加快速入门. 1.获取糗事百科url http://www.qiushibaike.com/h ...
- python学习(十六)写爬虫爬取糗事百科段子
原文链接:爬取糗事百科段子 利用前面学到的文件.正则表达式.urllib的知识,综合运用,爬取糗事百科的段子先用urllib库获取糗事百科热帖第一页的数据.并打开文件进行保存,正好可以熟悉一下之前学过 ...
- Python爬虫实战一之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- Python爬虫爬取糗事百科段子内容
参照网上的教程再做修改,抓取糗事百科段子(去除图片),详情见下面源码: #coding=utf-8#!/usr/bin/pythonimport urllibimport urllib2import ...
- Python爬上不得姐 并将段子写入数据库
#Python2.7 可以优化一下 前10页 每页点赞最多的段子 百思不得姐 # -*- coding: utf-8 -*-import MySQLdbimport urllib,urllib2imp ...
- 深度爬取之rules
深度爬取之rules CrawlSpider使用rules来决定爬虫的爬取规则,并将匹配后的url请求提交给引擎.所以在正常情况下,CrawlSpider不需要单独手动返回请求了. 在rules中包含 ...
随机推荐
- Office2021专业增强版激活
1.以管理员权限运行win+R输入CMD,进入命令行界面,输入以下命令 32位系统输入:cd /d %ProgramFiles(x86)%\Microsoft Office\Office16 64位系 ...
- 用python从网页下载单词库
从网站下载单词库 1 每一页有几百个单词 2 每一个单词有独立的URL,URL中包含单词的中文解释 3 使用的库 requests,pyquery,web #coding:utf-8 import r ...
- 架构的生态系 资讯环境被如何设计至今.PDF
书本详情 架构的生态系 资讯环境被如何设计至今 作者: 濱野智史出版社: 大鴻藝術股份有限公司副标题: 資訊環境被如何設計至今?原作名: アーキテクチャの生態系――情報環境はいかに設計されてきたか译者 ...
- 快速使用时序数据库InfluxDB
快速使用时序数据库InfluxDB InfluxDB是一款优秀的时间序列数据库,适合存储设备性能.日志.物联网传感器等带时间戳的数据. 1. InfluxDB主要特性 InfluxDB也就是TSDB, ...
- Create React App 安装时出现的错误解决方法
安装很简单 创建一个文件夹 xxx 第一步:npx create-react-app my-app 第二部:cd my-app 第三部:npm start 安装时出现的错误 一 解决方案 一: 全 ...
- 路飞前台全局css 全局配置文件,安装axios,安装vue-cookies,安装elementui,安装bootstrap和jq,后台主页模块表设计,后台主页模块轮播图接口,录入数据,跨域问题详解
目录 路飞前台全局css 全局配置文件,安装axios,安装vue-cookies,安装elementui,安装bootstrap和jq,后台主页模块表设计,后台主页模块轮播图接口,录入数据,跨域问题 ...
- 快速傅里叶变换详解(FFT)
自己也看了几篇博客,但是对我这种不擅长推导小白来说还是有一点困难,所以自己也写一篇博客也为像我一样的小白提供思路.以下内容包含各种LaTeX渲染,如果哪里有错误欢迎大家评论留言,或者添加本人qq:14 ...
- Jmeter 请求或响应中文乱码
1.首先检查 请求编码和后台接受编码是否一致,如果在查看结果树中 请求的中文不是乱码 而添加到后台程序是乱码 一般都是请求和接受编码不一致造成的 2.如果请求是get 请求中有中文 Content e ...
- jmeter测试工具安装篇
安装jmeter之前需要安装Java环境 window系统安装java 下载jdk 安装前我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwo ...
- windows下C#读文件遇到一个路径的天坑
在win下面准备了一个文件,右键属性然后"安全"复制完整的文件路径, 放到C#代码(vs中编写)中来读取,竟然死活异常: System.IO.IOException HResult ...