![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
爬虫
Ai_践行者
这个作者很懒,什么都没留下…
展开
-
crawlspider 爬取51job nlp北京地区的职位并保存到mongo
思路:先进入51job官网,输入关键词:nlp+北京,发现总共有5页,而且有规律。在spider里的start_urls在存放format取得这5页的链接rules的正则:发现提取的职位链接url有规律:都有beijing/数字,或beijing-三个小写字母/数字,因此写了两个Rule.有的非北京地区的职位也在页面中,需要注意。提取的职位详情中有的是5项,有的是4项,极个别是6,...原创 2019-01-25 17:24:09 · 286 阅读 · 0 评论 -
ubuntu 启动fiddler
切换到fiddler的安装目录下:cd fiddler执行:mono Fiddler.exe原创 2019-03-09 14:32:29 · 682 阅读 · 0 评论 -
selenium无头模式
from selenium import webdriverfrom selenium.webdriver.firefox.options import Optionsoptions = Options()options.add_argument('-headless')options.add_argument('--disable-gpu') # 禁用GPU加速options....原创 2019-03-04 11:37:54 · 3833 阅读 · 0 评论 -
Python编码转换:\u5168\u7403\u7ecf\u5178IT\u6570\u7801\u6392\u884c\u699c
decode("unicode_escape")print u'\u5168\u7403\u7ecf\u5178IT\u6570\u7801\u6392\u884c\u699c'.encode('utf-8')原创 2019-03-11 14:18:40 · 4177 阅读 · 0 评论 -
str去除全部空格
4:replace()方法,可以去除全部空格# replace主要用于字符串的替换replace(old, new, count)>>> a = " a b c ">>> a.replace(" ", "")'abc'5: join()方法+split()方法,可以去除全部空格# join为字符字符串合成传入一个字符串列表,split..原创 2019-03-11 19:10:29 · 1570 阅读 · 0 评论 -
re.complie()方法中嵌套的括号
s = "adfad asdfasdf asdfas asdfawef asd adsfas " 规则一:当给出的正则表达式中带有多个括号时,列表的元素为多个字符串组成的tuple,tuple中字符串个数与括号对数相同,字符串内容与每个括号内的正则表达式相对应,并且排放顺序是按括号出现的顺序。如下面两个例子。reObj1 = re.compile('((\w+)(\s)(\w+))') #带...原创 2019-03-13 11:01:04 · 1696 阅读 · 0 评论 -
多进程爬虫效果展示
import requestsimport reimport timefrom multiprocessing import Poolheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 ...原创 2019-03-21 16:21:43 · 220 阅读 · 0 评论 -
Scrapy-redis实现分布式
scrapy-redi重写了scrapy一些比较关键的代码,将scrapy变成一个可以在多个主机上同时运行的分布式爬虫。scrapy-redis工程的主体还是是redis和scrapy两个库,工程本身实现的东西不是很多,这个工程就像胶水一样,把这两个插件粘结了起来。scrapy-redis所实现的两种分布式:爬虫分布式以及item处理分布式。分别是由模块scheduler和模块pipeli...原创 2019-03-18 11:15:28 · 254 阅读 · 0 评论 -
DEPTH_PRIORITY实现深度优先爬取
DEPTH_PRIORITY默认: 0范围: scrapy.spidermiddlewares.depth.DepthMiddleware用于根据深度调整请求优先级的整数:如果为零(默认),则不从深度进行优先级调整正值将降低优先级,即,较高深度请求将被稍后处理 ; 这通常用于做广度优先爬网(BFO)负值将增加优先级,即,较高深度请求将被更快地处理(DFO)...原创 2019-03-25 14:39:27 · 1284 阅读 · 0 评论 -
list保存到scv
import csvdatas = [['俄罗斯', '1707'], ['加拿大', 997], ['中国', 960,111], ['美国', '936']]with open('country.csv', 'w') as csvfile: writer = csv.writer(csvfile) for row ...原创 2019-03-13 18:10:33 · 682 阅读 · 0 评论 -
高校项目
spider文件如下:import scrapyimport refrom Gaoxiao.items import GaoxiaoItemclass GaoxiaoSpider(scrapy.Spider): name = 'gaoxiao' allowed_domains = ['in985.com'] start_urls = [['https://w...原创 2019-04-10 11:02:00 · 324 阅读 · 0 评论 -
re 中括号的匹配[ ]需要加双斜杠\\
中括号的匹配需要在中括号前面加双斜杠\\原创 2019-03-27 15:06:33 · 1970 阅读 · 2 评论 -
提取亚马逊所有的商品类目与对应的url,保持层级关系
spider文件如下:# -*- coding: utf-8 -*-import scrapyimport reclass GoodsclassnameUrlSpider(scrapy.Spider): name = 'GoodsClassName_Url' allowed_domains = ['amazon.com'] start_urls = ['htt...原创 2019-04-11 09:17:47 · 3324 阅读 · 0 评论 -
51job网站抓取所有的nlp职位信息
spider如下:# -*- coding: utf-8 -*-import scrapyfrom scrapy.linkextractors import LinkExtractorfrom scrapy.spiders import CrawlSpider, Ruleclass JobSpider(CrawlSpider): name = 'job' all...原创 2019-04-11 09:32:33 · 242 阅读 · 0 评论 -
链家二手房信息抓取
spider如下:# -*- coding: utf-8 -*-import scrapyclass LianjiaSpider(scrapy.Spider): name = 'lianjia' allowed_domains = ['lianjia.com'] start_urls = ['https://bj.lianjia.com/ershoufang/...原创 2019-04-11 09:36:47 · 363 阅读 · 0 评论 -
抓取阿里云产品明细
import reimport csvfrom fake_useragent import UserAgentfrom urllib.request import Request,urlopen# 4种产品,16个地区,td的结构是:[产品_地区1--高可用版--金融版--基础版--]-[产品_地区2--高可用版--金融版--基础版-]-[产品_地区3-高可用版--金融版---基础版-...原创 2019-04-11 17:06:27 · 252 阅读 · 0 评论 -
多进程抓取猫眼电影top100
import jsonfrom multiprocessing import Poolimport requestsfrom requests.exceptions import RequestExceptionimport re#构造函数,输入一个url网址,发送请求后返回该网址的响应结果def get_one_page(url): try: respo...原创 2019-04-11 17:21:22 · 315 阅读 · 0 评论 -
scrapy_redis 和 docker 实现简单分布式爬虫
简介在使用 scrapy 爬取 IT桔子公司信息,用来进行分析,了解 IT 创业公司的一切情况,之前使用 scrapy 写了一个默认线程是10的单个实例,为了防止被 ban IP 设置了下载的速度,3万多个公司信息爬了1天多才完成,现在想到使用分布式爬虫来提高效率。源码githup技术工具:Python3.5 scrapy scrapy_redis redis docker1.12 d...转载 2019-04-28 16:09:42 · 664 阅读 · 0 评论 -
selenium爬取某家生活分类平台
from selenium import webdriverimport pickleimport requestsfrom lxml import etreefrom fake_useragent import UserAgentbase_url='https://passport.58.com/login/'browser = webdriver.Firefox()brows...原创 2019-03-06 17:19:16 · 171 阅读 · 0 评论 -
解决Selenium弹出新页面无法定位元素问题(Unable to locate element)
coding=utf-8 from selenium import webdriverimport timebrowser=webdriver.Firefox() browser.get("http://cn.bing.com/")keywords = 'MrLevo520 CSDN' send_keywords=keywords.decode('utf-8')#中英混输入可防止乱码...原创 2019-02-27 11:30:02 · 3880 阅读 · 0 评论 -
selenium爬取某生活分类网站点击事件后弹出的信息
from selenium import webdriverimport pickleurl='https://bj.58.com/zhuanye/37291869116169x.shtml?'base_url='https://passport.58.com/login/'browser=webdriver.Firefox()browser.get(base_url)brow...原创 2019-03-02 19:08:57 · 554 阅读 · 0 评论 -
selenium实现模拟登录百度
# -*- coding: utf-8 -*-from selenium import webdrivergeturl = 'https://passport.baidu.com/v2/?login'username = "-----"password = "------"browser = webdriver.Firefox()browser.get(geturl)bro...原创 2019-01-27 17:06:34 · 731 阅读 · 0 评论 -
firfox无头模式禁止加载图片
from selenium import webdriveroptions=webdriver.FirefoxProfile()或者是webdriver.FirefoxOptions()options.set_preference(‘permissions.default.image’,2)#禁止加载图片b=webdriver.Firefox(options)b.get(‘http://i...原创 2019-02-21 13:53:46 · 887 阅读 · 0 评论 -
国内连接docker官网很慢修改docker中配置,添加对应中国docker加速器。
国内连接docker官网很慢修改docker中配置,添加对应中国docker加速器。 vi /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true } ...原创 2019-02-11 13:14:39 · 1696 阅读 · 0 评论 -
安装splash与启动
前提:安装 docker安装splash安装命令:sudo docker pull scrapinghub/splash启动命令:sudo docker run -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash8050 (http),8051 (https) ,5023 (telnet)输入命令cat /etc/hos...原创 2019-02-11 13:25:17 · 1507 阅读 · 0 评论 -
scrapy+splash爬取京东冰激凌信息
1.启动splash:使用docker启动服务命令启动Splash服务:sudo docker run -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash2.创建新的项目:icecreamJD,创建新的爬虫icecreamscrapy startproject icecreamJDscrapy genspider ...原创 2019-02-11 16:58:06 · 582 阅读 · 0 评论 -
splash : add_cookie() 方法
此方法可以为当前页面添加Cookie,用法如下: 1 cookies = splash:add_cookie{name, value, path=nil, domain=nil, expires=nil, httpOnly=nil, secure=nil} 该方法的各个参数代表Cookie的各个属性。示例如下: 1...原创 2019-02-11 18:19:41 · 1932 阅读 · 0 评论 -
splash : mouse_click()方法
此方法可以模拟鼠标点击操作,传入的参数为坐标值x和y。此外,也可以直接选中某个节点,然后调用此方法,示例如下: 1 2 3 4 5 6 7 8 9 function main(splash) #以百度为案例 splash:go("https://www.baidu.com/"...原创 2019-02-11 18:30:44 · 2437 阅读 · 0 评论 -
splash:select()方法与select_all()
select()该方法可以选中符合条件的第一个节点,如果有多个节点符合条件,则只会返回一个,其参数是CSS选择器。示例如下: 1 2 3 4 5 6 7 function main(splash) splash:go("https://www.baidu.com/") input = splash:...原创 2019-02-11 18:35:37 · 3718 阅读 · 0 评论 -
scrapy结合selenium进行动态加载页面内容爬取
动态页面与静态页面比较常见的页面形式可以分为两种:静态页面 动态页面静态页面和动态页面的区别使用requests进行数据获取的时候一般使用的是respond.text来获取网页源码,然后通过正则表达式提取出需要的内容。例如:import requestsresponse = requests.get('https://www.baidu.com'...原创 2019-02-22 19:53:10 · 1828 阅读 · 2 评论 -
scrapy+selenium boss直聘爬虫案例分析
概述本文主要介绍scrapy架构图、组建、工作流程,以及结合selenium boss直聘爬虫案例分析架构图组件Scrapy 引擎(Engine)引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件.调度器(Scheduler)调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎.下载器(Downloader)...原创 2019-02-22 20:29:31 · 2967 阅读 · 0 评论 -
setting里的USER_AGENT和DownloaderMiddleware里的useragent的区别
setting里的USER_AGENT是全局的变量,分配给spider的,美运行一次就分配一次,spider里的所有的request必须共享。DownloaderMiddleware里的useragent是分配给每一个request的,可以覆盖前者。...原创 2019-02-23 12:40:17 · 283 阅读 · 0 评论 -
错误信息说找不到 php-fpm.conf
错误信息说找不到 php-fpm.conf原来是php-fpm.conf还没有,我们到 /usr/local/php/etc目录下将php-fpm.conf.default拷贝也一份成php-fpm.conf cd /usr/local/php/etc/ cp php-fpm.conf.default php-fpm.conf编辑一下这个配置文件: vim php-...原创 2019-02-18 16:05:03 · 3261 阅读 · 1 评论 -
开机启动 php-fpm
php-fpm是独立于web服务器和php之前的一层服务器,所以,我们需要开机启动它开机启动的配置文件是:/etc/rc.local ,加入 /usr/local/php/sbin/php-fpm 即可 [root@localhost init]# vi /etc/rc.local 1 #!/bin/sh 2 # 3 # This script will be e...原创 2019-02-18 16:11:59 · 1031 阅读 · 0 评论 -
php-fpm配置详解
pid = /usr/local/var/run/php-fpm.pid #pid设置,一定要开启,上面是Mac平台的。默认在php安装目录中的var/run/php-fpm.pid。比如centos的在: /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/var/log/php-fpm.log #错误日志,上面是Mac...原创 2019-02-18 16:13:48 · 445 阅读 · 0 评论 -
Selenium中单击Element:ElementClickInterceptedException
方法一:element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')driver.execute_script("arguments[0].click();", element)方法二:element = driver.find_element_by_css('div[class*="loadingWhi...原创 2019-02-24 19:01:33 · 30207 阅读 · 4 评论 -
splash : runjs()
可以执行JavaScript代码,它与evaljs()的功能类似,但是更偏向于执行某些动作或声明某些方法例如:function main(splash, args) splash:go("https://www.baidu.com") splash:runjs("foo = function() { return 'bar' }") local result = sp...原创 2019-02-13 20:27:21 · 721 阅读 · 0 评论 -
使用selenium webdriver从隐藏元素中获取文本
由于webdriver spec的定义,Selenium WebDriver 只会与可见元素交互,所以获取隐藏元素的文本总是会返回空字符串。可是,在某些情况下,我们需要获取隐藏元素的文本。这些内容可以使用element.attribute('attributeName'), 通过textContent, innerText, innerHTML等属性获取。innerHTML 会返回元素的内部...原创 2019-02-26 16:33:45 · 1647 阅读 · 0 评论 -
re匹配中文格式的字符
>>> import re>>>> s ='wo我爱sjl上学吧hfks'>>> res = re.findall(r'([\u2E80-\u9FFF]+)', s)>>> res['我爱', '上学吧']原创 2019-05-13 10:21:47 · 1644 阅读 · 0 评论