Python爬虫,爬取51job上有关大数据的招聘信息
爬虫初学者,练手实战
最近在上数据收集课,分享一些代码。
分析所要爬取的网址
/list/000000,000000,0000,00,9,99,+关键词+,2,"+str(页数)+".html
导入selenium包
from selenium import webdriver#导入selenium包from lxml import etreefrom time import sleepimport xlwtimport requests
监测的规避
from selenium.webdriver import ChromeOptionsoption = ChromeOptions()option.add_experimental_option('excludeSwitches',['enable-automation'])
使用谷歌浏览器的方法实例化一个浏览器对象,传入谷歌浏览器驱动程序
brs=webdriver.Chrome(executable_path='C:\\Users\\v\\Desktop\\86chromedriver.exe')#执行此语句可以打开一个浏览器
伪装头部
如何获取自己电脑浏览器的伪装头部
打开浏览器按F12,或者在浏览器空白处右击,点击检查(以谷歌为例)查找自己的伪装头部
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.38 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.38"}
完整代码
from selenium import webdriver#导入selenium包from lxml import etreefrom time import sleepimport xlwt#写表格模块import requests#监测的规避from selenium.webdriver import ChromeOptionsoption = ChromeOptions()option.add_experimental_option('excludeSwitches',['enable-automation'])#使用谷歌浏览器的方法实例化一个浏览器对象,传入谷歌浏览器驱动程序brs=webdriver.Chrome(executable_path='C:\\Users\\v\\Desktop\\86chromedriver.exe')#执行此语句可以打开一个浏览器#伪装头部headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.38 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.38"}# response=requests.get(url=url,headers=headers)salary=[]city=[]time=[]job_name=[]company_name=[]p=0x=1workbook=xlwt.Workbook('utf-8')#写入表格编码方式mysheet=workbook.add_sheet(sheetname='bigdata')for i in range(1,65):#爬取1-65页url="/list/000000,000000,0000,00,9,99,数据分析,2,"+str(i)+".html"brs.get(url)page_text=brs.page_source#通过这个属性获取页面源码数据html=etree.HTML(page_text)# brs.find_element_by_xpath('//*[@id="keywordInput"]').send_keys('大数据')# brs.find_element_by_xpath('//*[@id="search_btn"]').click()page_text=brs.page_source#通过这个属性获取页面源码数据html=etree.HTML(page_text)brs.execute_script("window.scrollTo(0, document.body.scrollHeight);")#把页面下拉到底部job_name=job_name+html.xpath('//div[@class="e"]/a/p/span/@title')time=time+html.xpath('//div[@class="e"]/a/p/span[@class="time"]/text()')city=city+html.xpath('//div[@class="e"]/a/p[2]/span[2]/text()') company_name=company_name+html.xpath('//div[@class="er"]/a/text()')salary=salary+html.xpath('//div[@class="e"]/a/p/span[@class="sal"]/text()')sleep(1)#睡眠1秒,防止被网站监测到for x in range(1,51):element = brs.find_element_by_xpath('//div[@class="j_joblist"]/div[{}]/a'.format(x))brs.execute_script("arguments[0].click();", element)all_h=brs.window_handlesbrs.switch_to.window(all_h[1])html =etree.HTML(brs.page_source)describe=html.xpath('//div[@class="tCompany_main"]//div[@class="bmsg job_msg inbox"]/p/text()')mysheet.write(p,5,describe)p=p+1print(describe)brs.close()brs.switch_to.window(all_h[0]) #把列表中的数据写入表格for i in range(len(company_name)):mysheet.write(i,0,company_name[i])for i in range(len(job_name)):mysheet.write(i,1,job_name[i])for i in range(len(city)):mysheet.write(i,2,city[i])for i in range(len(salary)):mysheet.write(i,3,salary[i])for i in range(len(time)):mysheet.write(i,4,time[i])sleep(5)#停留5秒关闭浏览器brs.quit()#关闭浏览器workbook.save('bigdata.xlsx')#保存表格
运行结果
python代码运行结果:
表格内容: