python3 [爬虫入门实战] 爬虫之使用selenium 爬取百度招聘内容并存mongodb
2017-07-07 11:21
1136 查看
爬取的内容为百度招聘页面下的python 杭州地区
所要爬取的内容一共爬取的是6个字段
1 招聘岗位 2 招聘城市 3 招聘公司 4 招聘薪资 5 招聘日期 6 招聘来源网站
用的是selenium + beautifulsoup + mongodb + re 模块进行爬取的内容
总体上难度不是很大,内容清除也不是很完整,记不住的或者没有记牢固的一边百度,一边加深印象。总体来说还是爬取出来了了
问题总结: 不知道是不是多进程结合selenium 爬取是不是不行,然后试着用了,我也不知道里面的原理是怎么回事,这次是自己初次入门,能力还是不足,mongodb使用的时候也不知道为什么开启了服务,但是插入数据老是插不进去,可能是被锁住了,但是删除锁之后还是会出现问题,也不知道后来问题是怎么解决的,也就那样好的吧。
在使用selenium 跳转到下一页的时候,根据get_element_byxpath(xxx) 里面的id 会根据页面的变化而变化的。如下图,可以自己亲测一下
总的值有1,2,3 昨晚弄的也是有点急什么的,不过最后爬取出来
看下爬取成果,总共586条,确实对应上了第一张图片上的586,
没有重复度。
最后贴上源代码:
# encoding=utf8 import re import time from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains from bs4 import BeautifulSoup import pymongo # 多进程 from multiprocessing import Pool # 1 打开数据库连接,mongodb默认端口为27017 conn = pymongo.MongoClient(host='localhost',port=27017) # 2 选择或创建数据库 jobdata = conn['baidujobs'] # 3 选择或创建数据集合 ver_job = jobdata['verjob'] baidu_baseurl = 'http://zhaopin.baidu.com/quanzhi?tid=4139&ie=utf8&oe=utf8&query=python%E6%9D%AD%E5%B7%9E&city_sug=%E6%9D%AD%E5%B7%9E' def set_winscroll(driver): time.sleep(2) driver.execute_script('window.scrollBy(0,2000)') time.sleep(3) driver.execute_script('window.scrollBy(0,3000)') time.sleep(3) # 1 初始化driver driver = webdriver.PhantomJS() # 2 调用get方法 driver.get(baidu_baseurl) # 3 进入网页 set_winscroll(driver) # 4 获取资源(第一页的数据) we_data = driver.page_source # print('first_we_data ' + we_data) def parse_html(html): soup = BeautifulSoup(html, 'lxml') item_url = soup.findAll('a', {'class': 'clearfix item line-bottom'}) # for item in zip(item_url): # print(item.get('href')) # 职位信息 jobs = soup.findAll('div', {'class': 'title-h3 line-clamp1'}) # for job in jobs: # print(job.string) # 职位信息 # 地址 + 公司名 compy = soup.findAll('p', {'class': 'area line-clamp1'}) # for com in compy: # print(com.string) # 薪资 salarys = soup.findAll('p', {'class': 'salary'}) # for salary in salarys: # print(salary.string) # 发布时间跟发布来源网站 addresss = soup.findAll('div', {'class': 'right time'}) # print(addresss) reg = r'<p>(.*?)</p>' regx = re.compile(reg) ads = re.findall(regx, str(addresss)) # print(ads) # for adds in ads: # data = adds.split('|') # print(data) for itm_url, job_detail, ver_compny, ver_salary, ver_addres in zip(item_url, jobs, compy, salarys, ads): data = { 'itme_url': 'http://zhaopin.baidu.com'+itm_url.get('href'), 'job_detail': job_detail.string, 'ver_compny': str(ver_compny.string), 'ver_salary': ver_salary.string, 'ver_addres': str(ver_addres).split('|'), } print(data) # 插入数据库 ver_job.insert_one(data) # 插入数据库失败 f.write(str(data)) def get_page_source(page_num): time.sleep(2) driver.find_element_by_xpath('//*[@id="pagination"]/p/span/a[%s]' % page_num).click() # //*[@id="pagination"]/p/span/a[1] 为在第一页的按钮 # //*[@id="pagination"]/p/span/a[2] 为第二页的按钮 set_winscroll(driver) we_data = driver.page_source return we_data f = open('百度招聘前30页杭州.txt', 'a',encoding='utf-8') # 首页的数据 def getBaiduHangZhouJob(we_data): parse_html(we_data) for i in range(1, 50): if i==1: we_data = get_page_source(1) parse_html(we_data) elif i<=5: we_data = get_page_source(str(2)) parse_html(we_data) else: we_data = get_page_source(str(3)) parse_html(we_data) f.close() if __name__ == '__main__': getBaiduHangZhouJob(we_data) # pool = Pool(processes=10) # pool.map_async(getBaiduHangZhouJob(we_data)) # pool.close() # f.close()
这里也使用了存入道txt文件中的方法,两个方法都有用到。
这次是第二次自己单独做练习selenium + mongodb
对于分布式爬虫scraper框架,需要进行开始的学习了,一开始对mongodb , selenium 也是有抵触,惧怕心理,不过下来之后却也是差不多的感觉,这次是入门了吧。慢慢的了解,熟悉,练习,回头过来你会发现也就是那么回事,加油
下次, scraper分布式爬虫的练习 ,对于python开发岗位,自己也要学会Django的学习开发,路子还有很长,需要自己静下心来摸索。
相关文章推荐
- python3 [爬虫入门实战]scrapy爬取盘多多五百万数据并存mongoDB
- python3 [爬虫入门实战] 爬虫之selenium 模拟QQ登陆抓取好友说说内容(暂留)
- python3 [爬虫入门实战]爬虫之scrapy爬取织梦者网站并存mongoDB
- Python爬虫入门实战七:使用Selenium--以抓取QQ空间好友说说为例
- python3 [爬虫入门实战]爬虫之selenium 安装设置与初步使用
- python3 [爬虫入门实战]爬虫之scrapy爬取织梦者网站并存mongoDB
- python3 [爬虫入门实战]scrapy爬取盘多多五百万数据并存mongoDB
- python3[爬虫实战] 使用selenium,xpath爬取京东手机(上)
- python3[爬虫实战] 使用selenium,xpath爬取京东手机(下)
- python爬虫实战笔记---selenium爬取QQ空间说说并存至本地
- Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
- Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
- Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
- python3[爬虫实战] 使用selenium,xpath爬取京东手机(下)
- python3 [爬虫实战] 微博爬虫京东客服之Selenium + Chrom浏览器的使用(上)
- python3 [爬虫入门实战]爬虫之scrapy爬取游天下南京短租房存mongodb
- Python爬虫入门实战八:数据储存——MongoDB与MySQL
- Python爬虫(入门+进阶)学习笔记 1-8 使用自动化神器Selenium爬取动态网页(案例三:爬取淘宝商品)
- Python爬虫实战入门五:获取JS动态内容—爬取今日头条