前言
针对AJAX异步加载的问题,Selenium真的是无往不利,你也不用管JS后台是怎么工作的,看到即可抓取,简单又暴力,暴力即美学。扯远了···想当初第一次做这种页面抓取的时候,也是用的Selenium
代码
#-*- coding:utf-8 -*-
from selenium import webdriver #webdriver就是加载你的浏览器驱动,比如我使用的是谷歌,就是Chrome,记住一个小知识,当Chrome不好使的时候,你可以换个内核,往往问题是出现在这
from selenium.webdriver.common.by import By #这几个东西都是固定的,是智能等待所需要用到的1
from selenium.webdriver.support.ui import WebDriverWait #这几个东西都是固定的,是智能等待所需要用到的2
from selenium.webdriver.support import expected_conditions as EC #这几个东西都是固定的,是智能等待所需要用到的3
from lxml import etree #叉path模块
def start_driver_request():
lagou = driver.page_source # 收集当前页信息
parse(lagou) #解析方法,传入信息
try:
WebDriverWait(driver, 3, 3).until(EC.presence_of_all_elements_located((By.XPATH, '//*[class="pager_next"]'))) #每当浏览器需要进行交互动作的时候,都必须进行智能等待,不信你取消掉这句试试
finally:
driver.find_element_by_css_selector('span[action="next"]').click()
# windows = driver.current_window_handle #
# all_handles = driver.window_handles #
# for handle in all_handles:
# if handle != windows:
# driver.switch_to.window(handle)
return start_driver_request()
def parse(response):
soup1 = etree.HTML(response)
item_job = soup1.xpath('//li/@data-positionname')
item_company = soup1.xpath('//li/@data-company')
item_salary = soup1.xpath('//li/@data-salary')
return print(item_job,item_company,item_salary)
if __name__ == '__main__':
url = 'https://www.lagou.com/jobs/list_?city=%E5%B9%BF%E5%B7%9E&cl=false&fromSearch=true&labelWords=&suginput='
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)
try:
WebDriverWait(driver, 3, 3).until(EC.presence_of_all_elements_located((By.XPATH, '//*[id="submit"]')))
finally:
driver.find_element_by_css_selector('input[id="keyword"]').send_keys("python")
driver.find_element_by_css_selector('input[id="submit"]').click()
start_driver_request()
运行结果
['客服专员(偏运营)', '行政助理(前台)', '用户增长运营', '.net程序员', '高级安卓开发工程师', '文案策划', '网络营销咨询师(SEO)', '费用税务会计助理', '客服专员', 'BD策划经理', '产品经理', '储备干部(仓储管理方向)', 'UI交互设计师', '运营实习生(BM001)', '金融销售专员 非保险(六险二金)'] ['广州咖客', '广州趣米网络', '作文纸条', '广州汉能', '无界互动', '安豆科技', 'Gridsum 国双', '有车以后', '晨风文化', '摘星者', '傲银科技', '丰海科技', '广州有信科技有限公司', '至真信息', '平安普惠'] ['3k-5k', '2k-4k', '15k-30k', '4k-7k', '13k-18k', '6k-12k', '5k-8k', '4k-6k', '4k-8k', '10k-15k', '15k-25k', '3k-5k', '9k-18k', '1k-2k', '6k-12k']
['Python开发工程师', 'python开发组长(架构方向)', 'python讲师', 'Python机器学习工程师', 'Python开发工程师', 'python开发', 'python开发工程师', 'python开发工程师', 'Python工程师', 'python开发', '量化平台测试工程师-python', 'Python高级开发工程师', 'python开发', 'Python应用工程师(业务系统方向)', 'Python讲师/助教'] ['网易', '省省回头车', '圆方圆学院', '佰锐科技', '泉涌信息', '掌昆游戏', '战神联盟', '深圳市星际互动娱乐科...', '广府数字', 'BBGAME', '经传多赢', 'AAM中国', '派客朴食', '逗号智能', '广州酷码教育咨询有限公司'] ['10k-20k', '15k-22k', '25k-50k', '12k-20k', '15k-30k', '10k-15k', '10k-18k', '10k-18k', '12k-18k', '10k-15k', '10k-13k', '15k-26k', '7k-14k', '10k-18k', '5k-8k']
['python开发工程师(业务方向)', 'PHP兼 Python 开发工程师', '数据开发工程师-Python【珠江新城】', 'python量化交易员', 'python开发工程师', 'python', 'python', 'python开发', 'Python开发工程师', 'python开发工程师', 'Python开发工程师', 'Python高级开发工程师', 'python开发工程师', 'python开发工程师', 'python开发'] ['省省回头车', '广府数字', '经传多赢', '分子资产', '广州游爱', '晋丰科技', '天地网通', '要出发', '乐顽科技', '稻禾科技', 'V大夫', '广东紫晶', '淘竹马网', '浩鲸科技', '广州连元'] ['8k-15k', '13k-18k', '10k-20k', '10k-20k', '7k-9k', '11k-12k', '9k-12k', '10k-18k', '8k-15k', '8k-15k', '10k-20k', '15k-30k', '6k-10k', '12k-18k', '8k-15k']
['Python开发工程师', 'Python工程师', 'Python开发工程师', 'Python开发工程师', 'python开发工程师', 'Python开发工程师', 'Python软件工程师', 'Python爬虫研发工程师', 'Python中级工程师', 'Python工程师', 'python工程师(人工智能方向)', 'python讲师', '初级Python开发工程师(平台开发)', 'Python web开发工程师', 'Python程序员学徒'] ['网易', '恒拓开源', '美亚商旅', '玄武科技', '嘉为科技', '爪挖科技', '英荔教育', '多益网络', '广州市云润大数据', '颉一软件', '云趣科技', '千锋互联', '星舆科技', '多多村', '创拓信息'] ['15k-25k', '10k-14k', '6k-12k', '10k-20k', '8k-10k', '8k-14k', '9k-15k', '9k-15k', '10k-15k', '15k-20k', '10k-20k', '20k-30k', '6k-12k', '15k-20k', '1k-2k']
['python服务端开发工程师', '中级Python开发工程师(平台开发)', 'Python后端开发工程师', 'Python程序员学徒', 'Python web开发工程师', 'Python web高级工程师', 'Java/Python算法工程师', 'django后端工程师', 'python游戏服务器开发工程师', 'Python web讲师', 'Python Web后端开发', 'python爬虫开发工程师', 'Python爬虫工程师', '小程序开发工程师', 'odoo开发工程师'] ['网易', '星舆科技', '肆狼游戏', '创拓信息', '菜鸟窝', '德利', '软博', '立云科技', '辉耀互娱', '传智播客广州分校', 'Herely 这里', '晋丰科技', 'Fordeal', '明朝互动', '蜂助手'] ['15k-30k', '12k-24k', '5k-10k', '2k-3k', '8k-15k', '12k-24k', '6k-8k', '8k-15k', '6k-12k', '20k-30k', '3k-5k', '10k-12k', '15k-30k', '8k-12k', '15k-20k']
['资深Python爬虫工程师', 'Python数据挖掘及人工智能机器学习讲师', '大数据开发工程师', '后台研发工程师', '软件开发工程师', '数据开发工程师', '后端开发工程师', '后端开发工程师', '后端开发工程师', '大数据开发工程师', '大数据开发工程师', '量化数据开发工程师', '资深容器平台开发工程师', '中级大数据开发工程师', '大数据开发工程师'] ['Fordeal', '传智播客广州分校', '一手服装批发APP', '广州市果肉教育科技有限公司', '合晟', '有车以后', 'AI考拉', '贝业思', '宇泰行', '君海游戏', '博智林机器人公司', '经传多赢', '滴普科技', '巴图鲁公司', '洋葱omall'] ['25k-50k', '20k-35k', '12k-16k', '10k-20k', '5k-8k', '12k-20k', '10k-18k', '9k-13k', '22k-35k', '10k-20k', '15k-30k', '10k-20k', '20k-40k', '11k-22k', '10k-15k']
['数据开发工程师', '大数据开发工程师', '大数据开发工程师', '游戏服务端开发工程师', '研发总监(技术方向)', 'BI开发工程师', '区块链开发工程师', '资深后端程序', '大数据开发工程师', 'BI开发工程师', '资深后端开发工程师', '技术支持工程师', 'golang开发工程师', '服务端开发工程师(gz)', '测试开发工程师'] ['AI考拉', '博智林机器人公司', '智蓝', '擎天柱', '航天精一', 'Fordeal', '链友科技', '芹菜科技', '机智云', '君海游戏', 'Mobvista', '大圣科技', '坏猴子网络', '金山办公软件', '亚美'] ['8k-12k', '25k-50k', '15k-25k', '10k-20k', '25k-35k', '20k-30k', '10k-20k', '15k-22k', '12k-22k', '10k-20k', '15k-30k', '10k-12k', '8k-15k', '15k-22k', '15k-25k']
['知识图谱研发工程师', '前端开发工程师', '前端工程师', '机器人自动化开发工程师(RPA)', '大数据开发工程师', '前端开发工程师', '前端开发工程师', 'Golang开发工程师', '运维开发工程师', '全栈高级工程师', '运维开发工程师', 'GO语言开发工程师', '高级前端工程师', 'BI/ETL开发工程师', '前端开发工程师'] ['博智林机器人公司', '阿里影业', '探迹科技', '富璟科技', '广州餐道', '广州市果肉教育科技有限公司', '优盟广告', '坏猴子网络', '魔幻科技', '大麦电商', '君海游戏', '武汉佰钧成技术有限公司', '奇化网', '奇异果科技', '合众财富'] ['20k-40k', '25k-40k', '15k-25k', '8k-15k', '10k-20k', '8k-16k', '10k-15k', '15k-30k', '10k-15k', '15k-25k', '7k-14k', '20k-30k', '15k-30k', '10k-15k', '12k-17k']
['自然语言处理开发工程师', '高级运维开发工程师', '高级测试工程师(偏测试开发)', 'C++开发工程师', 'PHP开发工程师', '中高级C++工程师', '高级U3D客户端开发工程师', '深度学习研发工程师', '运维开发工程师(薪资与能力成正比)', 'PHP开发工程师', 'php开发工程师', 'PHP开发工程师', 'C#开发工程师', '测试开发工程师', '高级PHP开发工程师'] ['博智林机器人公司', '经传多赢', '广州棒谷科技股份有限公司', '金十数据', '逗号智能', '广东东田教育集团有限公司', 'Goat Games', '多益网络', '乐至科技', '原力互娱', '广州天游', '妈妈网', '景心科技', '美的IoT', '爱员工'] ['20k-40k', '12k-20k', '8k-16k', '15k-30k', '12k-18k', '12k-20k', '18k-22k', '12k-20k', '13k-26k', '6k-10k', '7k-12k', '8k-15k', '12k-18k', '15k-20k', '18k-35k']
['php开发工程师', 'PHP高级开发工程师', '中高级PHP开发工程师', 'web前端开发工程师', 'Java工程师', 'PHP高级开发工程师', 'C++开发工程师', 'c++服务端开发工程师', '技术总监/CTO', '测试开发高级/资深工程师/专家', 'PHP开发工程师', '安卓开发工程师(手游)', 'PHP研发工程师', '网络虚拟化方向-软件开发工程师', '算法工程师'] ['Goat Games', '亚美', '卓游科技', '泉涌信息', '宇泰行', '伊智', '坏猴子网络', '原力互娱', '广州酷码教育咨询有限公司', '小鹏汽车', '绿瘦', '贪玩游戏', '翼课网', '虎牙信息', '蓝月亮'] ['10k-15k', '11k-17k', '15k-18k', '15k-30k', '10k-16k', '17k-25k', '13k-25k', '10k-20k', '20k-30k', '20k-40k', '12k-18k', '8k-16k', '12k-20k', '20k-40k', '15k-25k']
['初级c++开发', '前端', '前端开发工程师', '算法工程师', 'web前端开发工程师', '后台PHP开发工程师', '中级java工程师', '算法工程师', '算法工程师(AI)', '运维开发工程师', 'AI开发测试工程师', '后台工程师', '技术经理', 'GIS开发工程师(广州)', 'PHP高级开发工程师(后台系统)'] ['坏猴子网络', '文盛资产', '机智云', '灵机文化', '广电银通', '微咔世纪', '洋葱omall', '贝业思', '蓝月亮', '三七互娱', '北京云族佳科技', '探迹科技', '广府数字', 'Esri 中国', '鲸鱼集团'] ['10k-20k', '15k-24k', '8k-12k', '13k-20k', '10k-20k', '10k-16k', '10k-15k', '16k-24k', '25k-40k', '10k-15k', '10k-15k', '15k-30k', '25k-50k', '12k-18k', '12k-20k']
['JAVA开发工程师', '系统工程师(地点:天河华师地铁)', '高级前端', 'PHP后台开发工程师', '资深PHP开发工程师', '高级前端开发工程师', '安全高级/资深工程师/专家', '墨墨后端开发工程师 / 热爱技术,喜欢折腾', '高级PHP程序员', '算法工程师', '运维开发工程师(gz)', '风控测试开发工程师', '高级技术经理', 'Node.js 资深后端开发工程师', 'AI平台开发工程师'] ['洋葱omall', '蓝月亮', '文盛资产', '优提示', 'Fordeal', 'Mobvista', '小鹏汽车', '墨墨科技', '汉全科技', '众聚互娱', '金山办公软件', '合众财富', '广府数字', '芹菜科技', '图普科技(深度学习图像识别云)'] ['8k-15k', '10k-18k', '15k-24k', '8k-16k', '25k-50k', '10k-20k', '20k-40k', '15k-30k', '15k-20k', '20k-40k', '15k-25k', '11k-18k', '18k-35k', '20k-30k', '12k-24k']
['系统工程师(地点:天河华师地铁)', 'PHP后端开发工程师', 'PHP中级工程师', '高级软件系统工程师', '高级java开发工程师', '中级/高级PHP开发工程师', 'RPA开发工程师', '推荐系统高级/资深工程师/专家', '高级后台开发工程师', 'DBA工程师', 'Java工程师(大数据方向)', '算法工程师', '大数据开发工程师', '高级开发工程师 (内容抓取) (MJ001572)', '算法工程师(AI)'] ['蓝月亮', 'Fordeal', '伊智', 'Pony.ai', '蓝深科技', '海南济游网络科技有限公司', '恒利信息', '小鹏汽车', '字节跳动', '点购商城', '机智云', '广州思迈特', '网易', '欢聚时代(YY Inc)', '广州餐道'] ['10k-18k', '15k-30k', '10k-17k', '25k-50k', '10k-20k', '10k-15k', '12k-20k', '20k-40k', '25k-50k', '15k-25k', '10k-20k', '15k-25k', '15k-30k', '25k-50k', '15k-25k']
['高级算法工程师- 高精地图和定位', '嵌入式安全高级/资深工程师/专家', '大数据开发工程师', 'AI 容器云平台高级研发工程师-PaaS平台研发', '内容抓取高级研发工程师 (MJ001285)', '技术/产品支持工程师', '后台开发工程师', '小程序 开发 工程师', '高级SDN/NFV开发工程师', '算法工程师', '通信研发工程师', 'DevOps开发工程师', '后台开发工程师', '研发工程师', 'Docker开发工程师'] ['Pony.ai', '小鹏汽车', 'wlaike', '虎牙信息', '欢聚时代(YY Inc)', '北京瑞友', '字节跳动', '德客信息', '中国电信云计算公司', '朗新科技', 'SOUNK-LINK', '智蓝', '星汉科技', '广州英卓', '图普科技(深度学习图像识别云)'] ['25k-50k', '20k-40k', '25k-50k', '20k-40k', '20k-40k', '15k-25k', '20k-40k', '6k-10k', '18k-35k', '15k-20k', '10k-20k', '20k-25k', '15k-30k', '10k-15k', '15k-25k']
['AI 容器云平台高级研发工程师', '高级后台开发工程师', '云存储高级开发工程师', '脚本开发工程师', '云平台研发工程师', 'PaaS研发工程师', '开发工程师', '服务端开发工程师(阴阳师)', '大数据工程师', '高级交付工程师', '高级算法工程师', '实施工程师', '数据分析工程师', '推荐算法工程师', '高级算法工程师- 感知'] ['虎牙信息', '字节跳动', '中国电信云计算公司', '广州佰蜂', '联奕科技', '广州华胜企业管理服务有限公司', '三优亲子', '网易', '百布', '华云数据', '巴图鲁公司', '昊链科技', '广州六合信息科技股份有限公司', '探迹科技', 'Pony.ai 小马智行'] ['20k-40k', '25k-50k', '18k-35k', '6k-8k', '10k-20k', '15k-25k', '8k-15k', '20k-40k', '13k-26k', '15k-30k', '15k-30k', '5k-6k', '10k-15k', '10k-20k', '25k-50k']
小爬虫写起来是真的快,就是速度感人,这种阻塞式的小爬虫仅限于爬去数据较少的一些网站,到一些万级数据库里面扒数据,那就可能要考虑更多的东西了,不过我看了很多爬取项目,要涉及到爬虫效率的问题一般也是针对那些防爬措施不太强的网站,说到反反爬,我就想到开花,说到开花,那就是另外一个故事了。
网友评论