![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
爬虫
《落神》
这个作者很懒,什么都没留下…
展开
-
Python之图片转PDF
博主目前从事python爬虫的工作,当前任务需要将散列的图片转成pdf然后再合成一篇pdf报告,开始想了很多办法,在网上百度看了许多类似的文章,包括查看官方的文档,总算将这个事情搞定了。闲话少说,还是罗代码!!import osimport timeimport jsonimport pdfkitimport shutilimport hashlibimport requ...原创 2019-07-30 13:31:53 · 935 阅读 · 0 评论 -
python之html网页转PDF
接上一篇,博主目前所要做的任务,除了要将图片转成pdf外,可能还需要根据爬去站点的内容来合成一篇pdf格式文章,python中是能够做到这一点的,当然这个前提你要手写html的head,然后将爬取下的内容(注:内容为html样式)作为body的内容。python中的pdfkit包能够达到这方面的要求,当然前提要下载下来安装好,安装的方法很简单自行百度!直接上代码:def cont...原创 2019-08-01 09:49:21 · 1431 阅读 · 0 评论 -
xpath内容转标签方法
1、如果是lxml包下使用xpath,可以用如下方法from lxml import etreedef to_string(element): """ 将element对象转换成字符串 """ return etree.tostring(element[0], encoding="utf-8").decode()2、scrapy下直接查询到目标标签,...原创 2020-04-14 17:51:28 · 423 阅读 · 0 评论 -
简单的scrapy去重过滤器
当爬虫爬到的数据有重复,需要去重时,可以进行如下简单操作。一个用于去重的过滤器,丢弃那些已经被处理过的item。让我们假设我们的item有一个唯一的id,但是我们spider返回的多个item中包含有相同的id:from scrapy.exceptions import DropItem class DuplicatesPipeline(object): def __in...原创 2019-03-18 10:21:47 · 565 阅读 · 0 评论 -
headers、cookies处理
headers处理def headers_to_dict(headers): row_headear = headers.split('\n') row_dict = dict() # headers_list = [] for i in row_headear: if i == '': continue row = i.strip().split(':', 1) if len(row) == 0原创 2021-10-19 11:08:27 · 277 阅读 · 0 评论 -
网页过大,requests如何实现下载
最近爬虫遇到一个问题,被请求的url默认返回4条数据,为了节省请求的次数,修改了其中的参数,从而让它每次请求都可以返回50条数据实际实现的过程中,请求的的次数确实减少了,但是伴随着也出现了一个问题为了排查这个问题,浪费了我很长的时间,以为是程序出现了bug,最后看源码才查出原来是requests默认请求最大返回数据为10M,超过10M数据,数据就会缺失。其实,对于工作中,资源比较充足的公司来说,这个问题是不存在的,但是谁让我公司穷呢!所以为了节省购买IP、服务器等资源,只能从代码层做优化原创 2021-09-22 16:53:30 · 411 阅读 · 0 评论 -
pycharm快捷将原生headers转换成字典
爬虫过程中,为了设置headers,往往都会将原生的headers拷贝到py文件中,但是还需要我们手动将对应的每一个键值转换成字符串,并组成字典。如果headers中的键值较少,手动挨个转换还行,但是键值较多的话,就会非常的浪费时间。为了节省时间,查了一下pycharm有没有快捷方式可以直接转换,可惜没有快捷键,但是可以通过其中的替换功能+正则来快速实现这一功能。参考文章:https://blog.csdn.net/weixin_42240407/article/details/83904670原创 2021-08-18 11:45:30 · 1015 阅读 · 0 评论 -
爬虫---标准时间转换函数
# -*- coding: utf-8 -*-import reimport timedef getTime(timeList): """ timeList: xpath获取到中文时间列表 :param timeList: [] :return: str """ try: timeText = ''.join(timeList).replace('\r\n', '').replace('\n', '') time_h.原创 2021-07-20 14:36:08 · 189 阅读 · 0 评论 -
python---日志模块
贴一个封装好的日志模块,可以直接放在项目中,日志存放的路径配置一下就可以#!/user/bin/even python# -*- coding:utf-8 -*-import osimport timeimport loggingimport inspectfrom logging.handlers import RotatingFileHandlerfrom sns_spider.config.settings import *dir = LOG_PATH# print(os.原创 2021-07-08 14:32:40 · 316 阅读 · 1 评论 -
User-Agent池
爬虫有些网站,会针对ua做反爬,是一种常见的发票措施,这就要求我们在爬虫的过程中,针对某些网站必须做ua池。ua池创建是比较简单的,直接将ua放在一个指定的管道中,然后可以随机取,也可以轮询取。但是有些网站ua反爬比较严重,所以这就要求我们在创建ua池的时候,将ua池尽可能大的构建,这样能防止我们的爬虫被检测到。构建大的ua池,需要的ua太多了,如果只是百度去搜的话,太麻烦,而且量也不多这里作者找到一个专门提供ua的网站,提供了海量的ua,如果需要的话可以访问该网站。这里直接贴出原创 2021-07-08 11:43:43 · 1068 阅读 · 1 评论 -
爬虫---ins注册脚本
访问这个网站首先要解决qiang的问题,这里就跳过了重点:1、该网站手机号可以重复注册,但是应该有一个预警机制,将失效的账号以邮件的方式发出来2、爬取该网站最好尽量多的备手机号,100往上最好3、如果手动注册最好将浏览器的语言改成英文,中文状态下连续注册会有限制这里上传一个注册脚本,免去了手动注册,但是手机验证码需要手动加入,如果有猫池的话比较好注册成功后会将cookie打印出来,可以保存到文件或redis中,轮询调用# -*- coding: utf-8 -*-impor原创 2021-06-28 17:49:19 · 3090 阅读 · 4 评论 -
爬虫---时间转换模块
实际爬虫项目中,会爬取很多网站,比如上千上万的网站,如何在抓取数据的额过程中如何统一它们的格式是一个很大的问题。这些网站的时间格式千奇百怪,各种语言都有,所以为了方便发多数网站,写了这个日期格式转换的脚本并足以百分百解决全部网站,但是足以解决大多数网站,不足之处,根据项目的需要修改吧全部代码import datetimeimport reimport timeimport loggingfrom dateutil.parser import parsefrom dateutil.原创 2021-06-22 17:39:26 · 503 阅读 · 0 评论 -
如何忽略urllib3出现的warning问题
最近在爬油管的过程中,出现了个warning的日志问题,发现是urllib3引起的,给项目的日志输出造成了一定的影响。warning的出现是因为分布式高并发造成的,太多的请求同时去访问,造成部分访问没有成功。在解决的过程中,侧重点一直放在网站和requests包上面,一顿猛操作,最后也没有解决。后来才发现方向错了,换了几个搜索引擎,才避免了warning的输出,不过根本的问题还是没有解决。直接上代码import loggingurllib3_logger = logging.getL原创 2021-06-22 17:20:20 · 847 阅读 · 0 评论 -
python中的string.Template
string.Template多用于特定字符串的置换,对替换文件中的内容比较方便,当然前提是指定关键词打好标记string.Template的替换符号为“$”,和%s类似常用的操作如下from string import Templates='hello,$world!'t=Template(s)data = t.substitute({'world':'世界'})print('hello,世界!'...原创 2021-04-21 15:58:21 · 1078 阅读 · 0 评论 -
封装一个url拼接函数
在一个爬虫项目中,往往我们要爬取数百上千的网站,这个时候如果每一个爬虫我们都要手动拼接其中的url那就太繁琐了,这样重复大量的工作。所以为了减轻工作压力,写了一个适用于绝大多数网站的url拼接函数,即使有的url拼接错误,也可以将其判断加入函数中,封装成通用模块是减少除服劳动的最好的路径。def deal_url(url, link): addr = "" proctorl = url.split('//')[0] base_url = proctorl + "//" +原创 2020-11-06 14:26:56 · 651 阅读 · 1 评论 -
封装一个常用请求类
公司最近爬虫项目没有使用框架,所以每次建爬虫,都要去写N个请求,还要考虑编码的问题,为此深感麻烦,所以写了一个很low的类,便于复用。直接上代码!!class GetResponse(object): def __init__(self): self.session = requests.Session() self.session.keep_alive = False self.session.mount('http://', HTTPAd原创 2020-11-05 16:48:59 · 311 阅读 · 1 评论 -
多进程,非框架,爬虫运行脚本
实际项目开发过程中,如果不是用框架开发的爬虫项目,而是直接requets编写的一个个爬虫脚本,如果部署到服务器上,采用定时任务挨个去启动它,这样就太繁琐了,需要写很多定时任务。所以说这个时候就需要我们开发人员根据自己写的爬虫,将之分配到不同的启动脚本中。可以根据更新的速度来分配爬虫,从而只需要写很少的定时任务就可以了。我的爬虫脚本是这样写的,很简单实用,唯一的缺点就是代码不太美观!#!/user/bin/even python# -*- coding:utf-8 -*-import原创 2020-10-17 20:39:29 · 205 阅读 · 0 评论 -
批量杀死进程端口命令
因为爬虫项目采用的多进程,并且爬虫节点较多,出现bug候我们要修复bug,这个时候就要停掉我们的爬虫项目,但是因为爬虫较多,如果一个一个去杀死进程那就太呆了,这个时候就需要批量杀死我们的爬虫进程!可以采用以下命令批量杀死我们正在运行的爬虫项目,兼职不要太爽。ps aux|grep python3|grep -v grep|cut -c 9-15|xargs kill -15...原创 2020-10-17 20:08:22 · 344 阅读 · 0 评论 -
服务器安装谷歌浏览器
三行代码,在服务器安装谷歌浏览器wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpmyum install -y lsbyum localinstall google-chrome-stable_current_x86_64.rpm注意:安装相应版本的谷歌,修改后面的参数就好...原创 2020-10-17 19:57:11 · 2282 阅读 · 1 评论 -
selenum登录网页版有道词典
登录网页版有道词典,需注意它有两个复选框,这里只勾选第一个代码# -*- coding: utf-8 -*-# Time: 2020-06-22# Author: zuojileiimport time, tracebackfrom selenium import webdriverdef login(): """ 登录有道翻译网页版 """ acount_num = input('请输入163邮箱:\n') password_num = i原创 2020-06-22 17:10:02 · 852 阅读 · 0 评论 -
selenum登录163邮箱
163登录使用selenum登录,唯一需要注意的是需要先切到iframe标签内,才可以获取到form表单直接上代码# -*- coding: utf-8 -*-# Time: 2020-06-22# Author: luoshenimport time, tracebackfrom selenium import webdriverdef login(): """ 登录163邮箱 """ acount_num = input("请输入账号:\n")原创 2020-06-22 17:04:12 · 626 阅读 · 0 评论 -
爬取豆瓣电影数据
采集豆瓣数据时,最好加上代理,负责被封可不负责直接上代码# -*- coding: utf-8 -*-import requests, json, time, re, csv, randomfrom lxml import etree"""__Author__: luoshen__Date: 2020-06-19"""class Spider(object): header = { 'User-Agent': 'Mozilla/5.0 (X11; Li原创 2020-06-19 11:46:10 · 3761 阅读 · 0 评论 -
scrapy爬取东方财富
只有spiders部分,看不懂的私聊,从不写注释,就是这么任性# -*- coding: utf-8 -*-import scrapy, json, re, timefrom Spider.spider.tool.config import ConfigToolfrom Spider.spider.item.eastmoneyitem import EastmoneyItemfrom Spider.spider.tool.common_def import *"""__date__:原创 2020-06-15 17:17:42 · 1789 阅读 · 0 评论 -
爬取猪肉价格网
requests爬取猪价格网数据直接上代码# -*- coding: utf-8 -*-import requests, timefrom lxml import etree"""__date__: 2020-06-15__author__: 落神猪肉价格网,无存储模块"""class ZhuSpider(object): def __init__(self): self.url = "http://www.zhujiage.com.cn/arti原创 2020-06-15 17:03:14 · 352 阅读 · 0 评论 -
谷歌驱动浏览器无头模式爬取动态网页
以前selenium配合PhantomJS可以爬取动态网页,但是由于PhantomJS不在更新以后,就不在支持更高版本的python,所以,谷歌驱动浏览器无头模式就应运而生了,它是相当简单实用的,直接摞代码。import timefrom scrapy.http import HtmlResponsefrom selenium import webdriverfrom seleni...原创 2019-04-09 16:33:52 · 1019 阅读 · 0 评论 -
scrapy框架常用的小命令
今天个大家,介绍几个scrapy框架常用的几个小命令,便于初学scrapy的朋友学习和使用。1.创建一个新的项目:scrapy startproject baiduspider2.进入指定的文件夹(baiduspider):cd 百度spider3.生成爬虫文件:scrapy genspider baidu baidu.com4.运行文件:scrapy crawl baidu...原创 2018-08-14 19:44:02 · 230 阅读 · 0 评论 -
phantomjs的安装
python爬虫学习过程,前期我们可能会拿一些静态数据网站做操作,所以学起来相对简单一些,但是在实际工作当中我们遇到的数据并不仅仅只是静态的数据(比如淘宝网、京东网等),所以如何爬取动态的数据,是我们学习的重中之重。今天给大家介绍一个python获取动态数据的工具phantomjs,它对于获取动态数据非常实用的,接下来我会向大家如何安装phantomjs。PhantomJS是一个基于webki...原创 2018-08-09 20:48:51 · 917 阅读 · 0 评论 -
爬虫---获取指定标签内的文本
学习爬虫主要是为了从网站上获取我们想要的数据,但是工作以后,我们爬去的数据是多种多样的,所以这就要求我们掌握多种查找数据的方式。今天以查找文本为例给大家介绍我常用的四种查找数据的方式。以在scrapy框架抓取百度贴吧为例,介绍四种抓取文本的方式。1. 获取最外层标签,遍历内部所有的子标签“/text()”,获取标签文本class XiaoshuoSpider(scrapy.Spide...原创 2018-08-04 15:46:29 · 21565 阅读 · 0 评论 -
scrapy框架---安装
今天给大家介绍一个python爬虫中非常重要,方便且实用的工具,即为scrapy。但是scrapy在使用之前,要先学会怎么安装,只有安装成功之后,才可以更方便的学习爬取数据。1.打开终端,输入pipinstallscrapy ,如果显示安装成功,那么证明以前就安装过,可以直接拿过来用。但是这种情况应该是很极少的一部分,大部分人应该在安装时都会出现这种错误:错误:Microsoft...原创 2018-08-01 22:08:39 · 242 阅读 · 0 评论 -
selenium翻页模块
在爬取一些懒加载的网站时,需要执行下滑操作,下滑的过程中不能一下直接下滑到页面的底部,会造成图片加载不出来必须要进行持续的翻页下滑操作def pulldown(driver): """ 获取滚轮,分页向下滑动直至最底部,加载出图片 """ t = True while t: check_height = driver.execute...原创 2020-05-07 10:57:39 · 1031 阅读 · 0 评论 -
记录:selenium点击“下一页”或“继续阅读”出现的错误以及解决方式
模拟浏览器爬取某些网站的时候,点击下一页或者继续阅读标签会出现Element:ElementClickInterceptedException如果出现这种错误,说明这个标签被隐藏了,可以采取以下两种方式解决1、button = driver.find_element_by_xpath('//a[@id="btn-read-all"]')webdriver.ActionChain...原创 2020-05-07 10:46:41 · 24735 阅读 · 1 评论 -
scrapy-redis爬虫
简单的分布式爬虫1、settings配置import osROBOTSTXT_OBEY = FalseDOWNLOAD_DELAY = 1DEFAULT_REQUEST_HEADERS = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like G...原创 2020-04-21 17:04:55 · 137 阅读 · 0 评论 -
selenium+Chrom更改浏览器下载路径
1、浏览器有界面情况下设置下载路径def selenium_driver(enact): """ 驱动浏览器无头模式设置 """ options = Options() # options.add_argument('--headless') # options.add_argument('--no-sandbox') # option...原创 2020-04-15 09:10:27 · 2389 阅读 · 0 评论 -
爬虫实现模拟登陆的三种方式
1、直接将用户和密码作为参数,用post方式请求用户的登录界面;2、正统模拟登录方法:首先发送登录页面的get请求,获取到页面里的登录必须的参数(比如说zhihu登陆界面的 _xsrf,然后和账户密码一起post到服务器,登录成功;3、保存登陆后的cookie信息直接登陆。参考文章:https://blog.csdn.net/qq_37616069/article/details/80...原创 2020-04-01 14:44:24 · 1193 阅读 · 0 评论 -
记录:fiddler无法抓取chrome请求
如果chrome安装了代理插件或者vpn插件之类这些东西,那么这些插件会自动屏蔽掉fiddler,造成fiddler无法监听谷歌请求,因此无法显示抓取到的url。所以在fiddler抓取请求之前,要先在管理扩展工具界面,将代理插件关闭,这样在开启fiddler就可以抓取请求了...原创 2020-04-01 14:10:59 · 530 阅读 · 0 评论 -
requests请求报错:Invalid header name b:authority
第一次遇见这种问题,虽然很小已解决,但还是要记录一下。在爬取http://www.questmobile.com.cn/这个网站时,遇到图片无法加载的问题,其中显示如标题这种错误,其他数据都可以抓取下来,但唯独图片不可加载。这种问题就出现在请求头上,如下:self.headers = { ':authority': 'ws.questmobile.cn',...原创 2019-12-25 10:12:05 · 6982 阅读 · 0 评论 -
爬取西瓜视频影视分类
许久没有更新过博客了,今天帮朋友爬了西瓜视频,希望对喜欢python爬虫的朋友有所指引,希望大神批评指正。每一个网站都或多或少有一点反爬虫机制,并持续添加新的爬虫机制,所以说针对每一个网站,爬虫规则并不是一成不变的。我也会持续更新中!!!!本次爬虫采用:python3+scrapy+selenum,闲话少说,贴代码。核心逻辑代码xigua.py:# -*- coding: u...原创 2019-03-13 16:38:04 · 18187 阅读 · 0 评论