python 爬取句子迷,多好的一个网站(哭~~)
别问为什么爬它,问就是佛。
总结放前面:
1、电脑客户端被针对的情况,将浏览器改为手机浏览器
2、IP被封有点烦,暂时用校园网和宽带顶着(相当于两个IP)
3、多线程加锁保护文件保存和读取。
这么好看的句子,当然要爬下来一起分享啦~,其实是想拓展一个私人程序的,哈哈。
来来来,我们F12先看看,多简单哦,
获取页面,然后解析,最后找到我们需要的信息。只放搜寻信息的代码吧,其他都比较简单。
msg =BeautifulSoup(html, "lxml")
msg = soup.find_all('a',class_="xlistju")
然后你会发现只有:一半的句子????,而且所有的句子都是,换行的句子都给你少了一部分?????什么鬼,难道是我打开方式不对?
只截了html的图,代码不想改回去了,反正你会发现换行的东西丢了一半.......
难道是和网易云一样的加密?不会解密啊........
尝试获取句子的页面,进入爬取?你会发现一个更恶心的东西,每次进获取html 的句子不同,绝对加密了!(如果没有,我再多吃几碗大米.....)
我的宽带IP由于访问过多,被封了(GG),服务器返回:403。咋滴,我还有校园网!,哼,杠上了!
换种打开方式看看,我模拟手机浏览器打开,看看。谷歌自带手机浏览器打开网页功能
谷歌浏览器为例子:点击下面这个图标,然后刷新网页就好了。
我们需要找到手机的客户端信息,看包撒:
我直接复制下来了:
headers = {"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) ""AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Mobile Safari/537.36",}
测试一下,好像并没有发现什么不同,该少的还是少了.......,那进入句子的主要网页呢!
完美,都显示清楚了,果然手机端没这么多烦人的(以为手机端就不会用爬虫了,哼~~),我测试了几遍都没问题。(访问了几千的页面都没被禁,电脑客户端......)
由于这种方法效率比较低,我大概要爬取300个句子,就要访问330个页面,速度慢,开了多线程,保存本地,加了个锁(学了操作系统还是有用的,哈哈)。还是怕被封,所以把所有的状态码都显示了,以防万一!
接下来上所有代码:
# -*- conding:utf-8 -*-
"""
@author:ym
@time:05-2019/5/3-
"""
import threading
import timeimport requests
import re
count = 0
flag = 0def write_txt(msg):with open('C:\\****\***\Desktop\\好句子.txt', 'a+', encoding='UTF-8') as f:f.write(msg)def get_the_title(num):# 获得id号 然后通过手机浏览器模拟,反爬你个蛇皮,搞的我乌烟瘴气的。global countcount += 1url = "https://m.juzimi.com/ju/" + str(num)headers = {"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) ""AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Mobile Safari/537.36",}html = requests.get(url=url, headers=headers)print("\n"+str(num)+"状态码:"+str(html.status_code), end='')html = html.content.decode('UTF-8') # 解码msg = re.findall(r'content="句子欣赏评论:.*?\"', str(html))msg = str(msg).replace("content=\"句子欣赏评论:", '').replace("\"", '').\replace("[' “", '').replace("”']", '').replace("[' ", '').replace("']", '')msg += '\n'return msgdef get_good_night(page):"""获取该页面的所有链接》》id,然后根据get_the_title 获取具体内容一定要用手机浏览器的格式,不然会被反爬(正常抓取,显示不全,还是没想到办法解决..):param page: 当前的页面:return: 该页面爬取到的信息"""# 一共有30页 》》0-29 ,0则不写global flag # 并发情况 加锁flag += 1url = "https://www.juzimi.com/original/week/?page="+str(page)headers = {"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) ""AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Mobile Safari/537.36",}html = requests.get(url=url, headers=headers)print(str(page)+"页状态:"+str(html.status_code), )html = html.content.decode('UTF-8')msg = re.findall(r"/user/login\?destination=ju/.*?&me=flag\"", html)message = ''for i in msg:i = str(i).replace("/user/login?destination=ju/", '').replace("&me=flag\"", '')message += get_the_title(i)flag -= 1return messagedef add_speed(begin, end):i = beginmsg = ''while i <= end:msg += get_good_night(i)i = i + 1write_txt(msg)if __name__ == '__main__':threading.Thread(target=add_speed, args=(0, 5)).start()threading.Thread(target=add_speed, args=(6, 15)).start()threading.Thread(target=add_speed, args=(16, 30)).start()while flag:time.sleep(1)print('一共爬取好句子:'+str(count))print("ok\n")
nice!
python 爬取句子迷,多好的一个网站(哭~~)相关推荐
- python爬取百度百科表格_第一个python爬虫(python3爬取百度百科1000个页面)
以下内容参考自:http://www.imooc.com/learn/563 一.爬虫简介 爬虫:一段自动抓取互联网信息的程序 爬虫可以从一个url出发,访问其所关联的所有的url.并从每个url指向 ...
- python爬取网页防止重复内容_python解决网站的反爬虫策略总结
本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面 ...
- Python爬取全球是最大的电影数据库网站IMDb数据
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 作者 Dark Horse 前言 在使用 Python 开发爬虫的过程中,requests 和 B ...
- python爬虫爬微信数据可信吗_我用 Python 爬取微信好友,最后发现一个大秘密
前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...
- python爬取知乎live_GitHub - hjlarry/zhihulive: 一个用来管理沉淀你所购知乎live的工具 ✨✨...
知乎Live内容管理器 简介 这是一个管理你购买过的知乎LIVE的工具,使用场景是往往我们听过的live是语音格式,无法保存.沉淀和搜索.知乎live本身做为一个付费内容,它的内容价值较高,所以做这样 ...
- 我用 Python 爬取微信好友,最后发现一个大秘密
前言 你身处的环境是什么样,你就会成为什么样的人.现在人们日常生活基本上离不开微信,但微信不单单是一个即时通讯软件,微信更像是虚拟的现实世界.你所处的朋友圈是怎么样,慢慢你的思想也会变的怎么样.最近在 ...
- 2019-03-20 Python爬取需要登录的有验证码的网站
当你向验证码发起请求的时候,就有session了,记录下这次session 因为每当你请求一次验证码 或者 请求一次登录首页,验证码都在变动 验证码的链接可能不是固定的,可能需要GET/POST请求, ...
- python爬取bilibili弹幕_GitHub - yxwangnju/Bilibili-Bullet-Screen-Crawler: 一个爬取bilibili上弹幕的简单python程序...
Bilibili Bullet Screen Crawler 用python语言实现了一个简单的哔哩哔哩弹幕爬虫程序. 1. 运行环境 python 3 and higher versions. 运行 ...
- python爬取视频自动播放_求助该网站如何让它能自动播放下一个视频。。。醉了,要挂80个课时...
[Python] 纯文本查看 复制代码#-*- coding:utf-8 -*- from selenium import webdriver import time import re " ...
- python爬取视频自动播放_介绍一个python视频处理库:moviepy
处理视频是一个常见的需求.那么在python中如何用代码处理视频呢?最近我无意间发现了一个很好用的python视频处理库moviepy,其使用起来简单易用,而且功能比较强大,这里记录一下分享给大家. ...
最新文章
- 面试官问:生成订单30分钟未支付,则自动取消,该怎么实现?
- Installing PowerShell Management Library for windows server 2008
- 机器学习有很多关于核函数的说法,核函数的定义和作用是什么?
- Quartz.NET 架构与源代码分析系列 part 1 :Quartz.NET 入门
- .NET Core Love gRPC
- Linux每个目录的介绍
- 如何创建 SVN 服务器,并搭建自己的 SVN 仓库
- HBase 数据迁移
- TFS的站点中无法找到Report服务器
- FFmpeg源代码简单分析:内存的分配和释放(av_malloc()、av_free()等)
- BZOJ 2005 2005: [Noi2010]能量采集 | 容斥原理
- MySQL 入门(四)—— 数据库操作
- 米思齐MT1637简单显示字符串和时间
- 工业机器人编程与操作(1)工业机器人:发展、分类、ABB工业机器人介绍
- 利用Volatility进行Windows内存取证分析(二):内核对象、内核池学习小记
- 关于JAVA WEb如何连接Matlab
- ThinkPHP拼团拼购h5单商户商城[可对接公众号]非常棒的一款h5拼团商城源码
- 【Docker】谷粒商城笔记记录:P104运行ElasticSearch容器
- [SDOI2009]学校食堂Dining(洛谷2157)
- 衡阳师范学院计算机考试题库,衡阳师范学院自主招生综合素质测试面试题方法指导...