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中包含 ...
随机推荐
- Python条件语句和基本数据类型
1.if基本语句 if 条件: 内部代码块 else: ...... 2.if支持嵌套 if 1 == 1: if 2 == 2: print('走一步') else: print('走两步') el ...
- 谈谈mysql的主键和外键
主键:保证数据的唯一性,非空且唯一,一般设置主键的语法为:字段 类型 PRIMARY KEY;或者 字段 类型,PRIMARY KEY(字段名) 外键:保证数据的完整性,一致性.一般设置的外键关联的是 ...
- 最新go语言学习教程
go语言学习教程 集合了连接go routine.go连接redis.go连接kafka等示例,所有代码均经过实践,可以直接使用 https://github.com/fastbpmn/go-stud ...
- matlab算符合集
1.逻辑算符 1)且 : A & B -- 两个逻辑数组之间 逐个元素 进行逻辑"与"操作 AB可为矩阵. 首先判断表达式A的逻辑值,然后判断B,继而进行逻辑"与 ...
- aws note
Amazon EC2 Instance Types https://aws.amazon.com/ec2/instance-types/ My courses - AWS Skill Builder ...
- kubernetes:v1.25 + containerd
由于kubernets从v1.24开始停止支持dockershim,kubernets不再支持通过docker来创建和管理容器.本文记录安装kubernetes v1.25 + containerd ...
- python桌面应用自动化,uiautomation模块的Depth和searchDepth心得
最近在学习yinkaisheng大神写的uiautomation模块,Depth和searchDepth一直使用不好,明明Depth=3,居然可以用searchDepth=1找到,网上也没找到答案,就 ...
- IQuerable展示数据时出现重复【View在类定义的时候没有将多主键给标识出来】
废话少说,直接上图! 从上面可以看到我有一些数据是重复了,是整条记录都重复了,但是我看到数据库里面的View数据是没有重复的,那就说明问题:"可能是View在类定义的时候没有将多主键给标识出 ...
- 关于Salesforce存在至于项目的选择List的取值问题
概要: 我们在做项目的时候,经常会遇到一个问题: 一个选择List字段的可选项被另一个选择List制约,这种情况如何在后台取得这两者的对应关系. 原文在这里(侵删): Apexで連動項目の選択肢を取得 ...
- 小程序调用OCR识别操作的过程,特此记录。
bu废话,直接记录.(注:我用的是云调用!!!) 对于大家首次使用该操作时,推荐两位大佬的文章,大家完全可以看两位大佬的文章,一步一步来就可以实现. 第一个文章呢,先看这个 https://blog. ...