当前位置: 首页 > news >正文

电子商务网站建设模块wordpress首页添加站点统计显示

电子商务网站建设模块,wordpress首页添加站点统计显示,h5免费制作平台易企秀官方,js网站跳转代码文章目录 一、主要目标二、开发环境三、selenium安装和驱动下载四、主要思路五、代码展示和说明1、导入相关库2、启动浏览器3、搜索框定位创建csv文件招聘页面数据解析(XPATH)总代码效果展示 六、总结 一、主要目标 以boss直聘为目标网站#xff0c;主要目的是爬取下图中的所… 文章目录 一、主要目标二、开发环境三、selenium安装和驱动下载四、主要思路五、代码展示和说明1、导入相关库2、启动浏览器3、搜索框定位创建csv文件招聘页面数据解析(XPATH)总代码效果展示 六、总结 一、主要目标 以boss直聘为目标网站主要目的是爬取下图中的所有信息并将爬取到的数据进行持久化存储。(可以存储到数据库中或进行数据可视化分析用web网页进行展示这里我就以csv形式存在了本地 二、开发环境 python3.8 pycharm Firefox 三、selenium安装和驱动下载 环境安装: pip install selenium 版本对照表(火狐的) https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html 浏览器驱动下载 https://registry.npmmirror.com/binary.html?pathgeckodriver/ 火狐浏览器下载 https://ftp.mozilla.org/pub/firefox/releases/ 四、主要思路 利用selenium打开模拟浏览器访问boss直聘首页(绕过cookie反爬)定位搜索按钮输入某职位点击搜索在搜索结果页面解析出现的职位信息并保存获取多个页面可以定位跳转至下一页的按钮(但是这个跳转我一直没成功于是我就将请求url写成了动态的直接发送一个新的url来代替跳转) 五、代码展示和说明 1、导入相关库 # 用来将爬取到的数据以csv保存到本地 import csv from time import sleep # 使用selenium绕过cookie反爬 from selenium import webdriver from selenium.webdriver.firefox.service import Service from selenium.webdriver.common.by import By # 使用xpath进行页面数据解析 from lxml import etree 2、启动浏览器 (有界面) # 传入浏览器的驱动 ser Service(./geckodriver.exe) # 实例化一个浏览器对象 bro webdriver.Firefox(serviceser) # 设置隐式等待 超时时间设置为20s bro.implicitly_wait(20) # 让浏览器发起一个指定url请求 bro.get(urls[0])(无界面) # 1. 初始化配置无可视化界面对象 options webdriver.FirefoxOptions() # 2. 无界面模式 options.add_argument(-headless) options.add_argument(--disable-gpu)# 让selenium规避被检测到的风险 options.add_argument(excludeSwitches)# 传入浏览器的驱动 ser Service(./geckodriver.exe)# 实例化一个浏览器对象 bro webdriver.Firefox(serviceser, optionsoptions)# 设置隐式等待 超时时间设置为20s bro.implicitly_wait(20)# 让浏览器发起一个指定url请求 bro.get(urls[0])3、搜索框定位 进入浏览器按F12进入开发者模式 然后分析下图可知搜索框和搜索按钮都有唯一的class值 然后输入搜索内容并跳转代码如下 # 定位搜索框 .ipt-search search_tag bro.find_element(By.CSS_SELECTOR, value.ipt-search) # 输入搜索内容 search_tag.send_keys()# 定位搜索按钮 .代表的是当前标签下的class btn bro.find_element(By.CSS_SELECTOR, value.btn-search) # 点击搜索按钮 btn.click()创建csv文件 一开始编码为utf-8但在本地打开内容是乱码然后改成utf-8_sig就ok了 # f open(boos直聘.csv, w, encodingutf-8, newline) f open(boos直聘.csv, w, encodingutf-8_sig, newline) csv.writer(f).writerow([职位, 位置, 薪资, 联系人, 经验, 公司名, 类型, 职位技能, 福利, 详情页]) 招聘页面数据解析(XPATH) 通过分析可知招聘数据全在ul标签下的li标签中 我们要获取的信息有这些接下来就要进入li标签中一个一个去分析 其中职位名称在span标签中而span标签的class有唯一的值job-name 其它数据分析方式和这个相同 数据解析代码如下 def parse():# 临时存放获取到的信息jobList []# 提取信息page_text bro.page_source# 将从互联网上获取的源码数据加载到tree对象中tree etree.HTML(page_text)job tree.xpath(//div[classsearch-job-result]/ul/li)for i in job:# 职位job_name i.xpath(.//span[classjob-name]/text())[0]# 位置jobArea i.xpath(.//span[classjob-area]/text())[0]# 联系人linkman_list i.xpath(.//div[classinfo-public]//text())linkman ·.join(linkman_list)# 详情页urldetail_url prefix i.xpath(.//h3[classcompany-name]/a/href)[0]# print(detail_url)# 薪资salary i.xpath(.//span[classsalary]/text())[0]# 经验job_lable_list i.xpath(.//ul[classtag-list]//text())job_lables .join(job_lable_list)# 公司名company i.xpath(.//h3[classcompany-name]/a/text())[0]# 公司类型和人数等companyScale_list i.xpath(.//div[classcompany-info]/ul//text())companyScale .join(companyScale_list)# 职位技能skill_list i.xpath(./div[2]/ul//text())skills .join(skill_list)# 福利 如有全勤奖补贴等try:job_desc i.xpath(.//div[classinfo-desc]/text())[0]# print(type(info_desc))except:job_desc # print(type(info_desc))# print(job_name, jobArea, salary, linkman, salaryScale, name, componyScale, tags, info_desc)# 将数据写入csvcsv.writer(f).writerow([job_name, jobArea, salary, linkman, job_lables, company, companyScale, skills, job_desc, detail_url])# 将数据存入数组中jobList.append({jobName: job_name,jobArea: jobArea,salary: salary,linkman: linkman,jobLables: job_lables,company: company,companyScale: companyScale,skills: skills,job_desc: job_desc,detailUrl: detail_url,})return {jobList: jobList} 总代码 import csv from time import sleep from selenium import webdriver from selenium.webdriver.firefox.service import Service from selenium.webdriver.common.by import By from lxml import etree# 指定url urls [https://www.zhipin.com/, https://www.zhipin.com/web/geek/job?query{}page{}] prefix https://www.zhipin.com# 1. 初始化配置无可视化界面对象 options webdriver.FirefoxOptions() # 2. 无界面模式 options.add_argument(-headless) options.add_argument(--disable-gpu)# 让selenium规避被检测到的风险 options.add_argument(excludeSwitches)# 传入浏览器的驱动 ser Service(./geckodriver.exe)# 实例化一个浏览器对象 bro webdriver.Firefox(serviceser, optionsoptions) # bro webdriver.Firefox(serviceser# 设置隐式等待 超时时间设置为20s # bro.implicitly_wait(20)# 让浏览器发起一个指定url请求 bro.get(urls[0])sleep(6)# 定位搜索框 .ipt-search search_tag bro.find_element(By.CSS_SELECTOR, value.ipt-search) # 输入搜索内容 search_tag.send_keys()# 定位搜索按钮 .代表的是当前标签下的class btn bro.find_element(By.CSS_SELECTOR, value.btn-search) # 点击搜索按钮 btn.click() sleep(15)# f open(boos直聘.csv, w, encodingutf-8, newline) f open(boos直聘.csv, w, encodingutf-8_sig, newline) csv.writer(f).writerow([职位, 位置, 薪资, 联系人, 经验, 公司名, 类型, 职位技能, 福利, 详情页])def parse():# 临时存放获取到的信息jobList []# 提取信息page_text bro.page_source# 将从互联网上获取的源码数据加载到tree对象中tree etree.HTML(page_text)job tree.xpath(//div[classsearch-job-result]/ul/li)for i in job:# 职位job_name i.xpath(.//span[classjob-name]/text())[0]# 位置jobArea i.xpath(.//span[classjob-area]/text())[0]# 联系人linkman_list i.xpath(.//div[classinfo-public]//text())linkman ·.join(linkman_list)# 详情页urldetail_url prefix i.xpath(.//h3[classcompany-name]/a/href)[0]# print(detail_url)# 薪资salary i.xpath(.//span[classsalary]/text())[0]# 经验job_lable_list i.xpath(.//ul[classtag-list]//text())job_lables .join(job_lable_list)# 公司名company i.xpath(.//h3[classcompany-name]/a/text())[0]# 公司类型和人数等companyScale_list i.xpath(.//div[classcompany-info]/ul//text())companyScale .join(companyScale_list)# 职位技能skill_list i.xpath(./div[2]/ul//text())skills .join(skill_list)# 福利 如有全勤奖补贴等try:job_desc i.xpath(.//div[classinfo-desc]/text())[0]# print(type(info_desc))except:job_desc # print(type(info_desc))# print(job_name, jobArea, salary, linkman, salaryScale, name, componyScale, tags, info_desc)# 将数据写入csvcsv.writer(f).writerow([job_name, jobArea, salary, linkman, job_lables, company, companyScale, skills, job_desc, detail_url])# 将数据存入数组中jobList.append({jobName: job_name,jobArea: jobArea,salary: salary,linkman: linkman,jobLables: job_lables,company: company,companyScale: companyScale,skills: skills,job_desc: job_desc,detailUrl: detail_url,})return {jobList: jobList}if __name__ __main__:# 访问第一页jobList parse()query # 访问剩下的九页for i in range(2, 11):print(f第{i}页)url urls[1].format(query, i)bro.get(url)sleep(15)jobList parse()# 关闭浏览器bro.quit() 效果展示 六、总结 不知道是boss反爬做的太好还是我个人太菜(哭~) 我个人倾向于第二种 这个爬虫还有很多很多的不足之处比如在页面加载的时候boss的页面会多次加载(这里我很是不理解我明明只访问了一次但是他能加载好多次)这就导致是不是ip就会被封… 再比如那个下一页的点击按钮一直点不了不知有没有路过的大佬指点一二(呜呜呜~ # 下一页标签定位 ui-icon-arrow-right next_tag bro.find_element(By.CSS_SELECTOR, value.ui-icon-arrow-right) # action ActionChains(bro) # # 点击指定的标签 # action.click(next_tag).perform() # sleep(0.1) # # 释放动作链 # action.release().perform()总之boss的信息爬取我还是无法做到完全自动化
http://www.pierceye.com/news/673432/

相关文章:

  • 阿里巴巴国际站做2个网站有用网站制作是怎么学的
  • 做的网站图片不显示企业邮箱什么格式
  • 今天重大新闻优化设计答案五年级下册
  • 网站建设市场报价建站哪家好 discuz
  • 没后台的网站怎么做优化中国联通网站备案
  • 金融产品做网站推广网站访问者
  • 安徽省工程建设安全协会网站广州网站设计皆赞乐云践新
  • 成都建设网上商城平台公司深圳网站建设推广优化seo
  • 数据服务网站开发国家重点建设裤网站
  • 做兼职上哪个网站wordpress相册灯箱弹窗
  • 微信编辑器做网站网页设计专业开设院校
  • 网站建设衤金手指谷哥十四wordpress电商主题数据库
  • 网站开发要会英语吗app手机网站设计
  • 青岛海诚互联做网站好吗typo wordpress theme
  • 有关大学生做兼职的网站有哪些网站规划建设方案模板
  • 深圳珠宝网站建设分析报告做电影网站 需要进那些群
  • 哪些网站可以做翻译兼职成都编程培训机构排名前十
  • 网站html有趣代码做暖暖视频网站大全
  • 最新淘宝客网站程序长春网站运做思路
  • 一个网站的建设需要什么手续phpcms旅游网站模板下载
  • 昆明做网站费用做网站的一些话术
  • sae 网站备案信息汽车配件加工网
  • 做游戏网站要备案吗群晖做网站需要备案吗
  • 网站制作教程为什么语音转文字里面没有海南的
  • 怎么让别人看到自己做的网站地信的网站建设
  • 网站主体注销泰安新闻视频在线
  • 怀柔网站建设优化seo瓯北网站制作公司
  • 福田住房和建设局网站官网做自己点击网站
  • 临沂市建设局网站简介佛山建网站
  • 哪种类型的网站比较难做阿里云宝塔安装wordpress