首页 > 其他分享 >爬取BOSS直聘信息selenium+CSS及总结

爬取BOSS直聘信息selenium+CSS及总结

时间:2023-04-09 18:31:44浏览次数:44  
标签:直聘 selenium driver BOSS job text div SELECTOR CSS

1、

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import csv


f = open(r'D:\Pyprogram\venv\从零开始学python网络爬虫\爬取BOOS直聘.csv','wt',newline='',encoding='utf-8')
writer = csv.writer(f)
writer.writerow(('岗位','地区','薪资','工作年限','学历','公司','工作待遇'))

driver = webdriver.Chrome()
driver.get('https://www.zhipin.com/?sid=sem_pz_bdpc_dasou_title')
driver.implicitly_wait(10)
#driver.find_element(By.CSS_SELECTOR,'#wrap > div.column-search-panel.search-panel-new > div > div.search-box > div.search-form > form > div.search-form-con > p > input').send_keys('python')
driver.find_element(By.CSS_SELECTOR,'div.search-form-con > p > input').send_keys('python')
time.sleep(1)
#driver.find_element(By.CSS_SELECTOR,'#wrap > div.column-search-panel.search-panel-new > div > div.search-box > div.search-form > form > button').click()
driver.find_element(By.CSS_SELECTOR,'div.search-form > form > button').click()
# bottons = driver.find_elements(By.CSS_SELECTOR,'#wrap > div.page-job-wrapper > div.page-job-inner > div > div.job-list-wrapper > div.search-job-result > div > div > div > a:nth-child(2)')

# time.sleep(1)
# driver.close()
#links = driver.find_elements(By.CSS_SELECTOR,'#wrap > div.page-job-wrapper > div.page-job-inner > div > div.job-list-wrapper > div.search-job-result > ul > li')
# print(link)
# for link in links:
#     job_names = link.find_element(By.CSS_SELECTOR,'div.job-title.clearfix > span.job-name').text
#     titels = link.find_element(By.CSS_SELECTOR,'div.job-title.clearfix > span.job-area-wrapper > span').text
#     print(job_names,titels)


def get_info():
    job_names = driver.find_elements(By.CSS_SELECTOR,'div.job-title.clearfix > span.job-name')
    areas = driver.find_elements(By.CSS_SELECTOR,'div.job-title.clearfix > span.job-area-wrapper > span')
    salarys = driver.find_elements(By.CSS_SELECTOR,'div.job-card-body.clearfix > a > div.job-info.clearfix > span')
    experiences = driver.find_elements(By.CSS_SELECTOR,'div.job-card-body.clearfix > a > div.job-info.clearfix > ul > li:nth-child(1)')
    educations = driver.find_elements(By.CSS_SELECTOR,'div.job-info.clearfix > ul > li:nth-child(2)')
    companys = driver.find_elements(By.CSS_SELECTOR,'div.job-card-body.clearfix > div > div.company-info > h3 > a')
    descs =driver.find_elements(By.CSS_SELECTOR,'ul > li > div.job-card-footer.clearfix > div')
    for job_name,area,salary,experience,education,company,desc in zip(job_names,areas,salarys,experiences,educations,companys,descs):
        data= {
            'job_name':job_name.text,
            'area':area.text,
            'salary':salary.text,
            'experience':experience.text,
            'education':education.text,
            'company':company.text,
            'desc':desc.text
        }
        print(data)
        writer.writerow((job_name.text, area.text, salary.text,experience.text,education.text,company.text,desc.text))
    #点击下一页按钮
    driver.find_element(By.CSS_SELECTOR,'#wrap > div.page-job-wrapper > div.page-job-inner > div > div.job-list-wrapper > div.search-job-result > div > div > div > a:nth-child(10) > i').click()
    current_handle = driver.current_window_handle
    handles = driver.window_handles
    for handle in handles:
        driver.switch_to.window(handle)
        time.sleep(2)
if __name__ == '__main__':

    for page in range(1,3):
        time.sleep(10)
        print(f'爬取第{page}页')
        time.sleep(15)
        get_info()
        time(1)
    driver.quit()

2、报错,调了很久,试过强制等待和增加判断条件,都不行。网上百度看了很多网友的经验,最终增加句柄搞定

current_handle = driver.current_window_handle
handles = driver.window_handles
for handle in handles:
    driver.switch_to.window(handle)
    time.sleep(2)

爬取BOSS直聘信息selenium+CSS及总结_CSS



标签:直聘,selenium,driver,BOSS,job,text,div,SELECTOR,CSS
From: https://blog.51cto.com/u_15698082/6178921

相关文章

  • 爬虫最后一天,爬取到的数据存到mysql中,爬虫和下载中间件、加代理、cookie、header、se
    爬到的数据存到mysql中classFirstscrapyMySqlPipeline:defopen_spider(self,spider):print('我开了')self.conn=pymysql.connect(user='root',password="",host='127.0.0.1......
  • Python+Selenium.webdriver实现WEB端UI自动化测试
    本篇记录基于Python+Selenium.webdriver实现WEB端UI自动化测试,其中测试用例使用excel维护。 1.项目选取(登录页无验证码校验的项目)该示例选取的是登录页不需要输入验证码校验的基础页面(考虑到现在大部分项目都是需要进行验证码校验的,后面研究后再出一篇相关的分享。) 2.环境......
  • python Selenium自动化测试
    转载自https://blog.csdn.net/tangya3158613488/article/details/106902110 Selenium自动化测试什么是自动化测试自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。总的概括即:将人为驱动的测试行为转化为机器执行的......
  • Python selenium过图片滑块验证
    计算滑块移动距离defget_distance(image1,image2):'''拿到滑动验证码需要移动的距离:paramimage1:没有缺口的图片对象:paramimage2:带缺口的图片对象:return:需要移动的距离'''#print('size',image1.size)threshold=5......
  • selenium 小技巧集合(三)
    iframe切换iframe,又叫浮动帧标记,是内嵌的网页元素,可以将一个html文件嵌入到另一个html文件中显示对iframe进行操作,需要用到以下三种方法:switch_to_iframe()            切换到iframe上(未来会被删除,不建议使用)switch_to.frame()       ......
  • selenium 小技巧集合(四)
    警告框处理在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用switch_to.alert方法定位到alert/confirm/prompt,然后使用text/accept/dismiss/send_keys等方法进行操作text:返回alert/confirm/prompt中的文字信息accept():接受现有警......
  • selenium 小技巧集合(一)
    键盘事件Keys()类提供了键盘上几乎所有按键的方法。前面了解到,send_keys()方法可以用来模拟键盘输入,除此之外,我们还可以用它来输入键盘上的按键,甚至是组合键,如Ctrl+A、Ctrl+C等fromseleniumimportwebdriver#引入Keys模块fromselenium.webdriver.common.keysimp......
  • Day 22 22.1 Web自动化之selenium&pyppeteer
    web自动化随着互联网的发展,前端技术也在不断变化,数据的加载方式也不再是单纯的服务端渲染了。现在你可以看到很多网站的数据可能都是通过接口的形式传输的,或者即使不是接口那也是一些JSON的数据,然后经过JavaScript渲染得出来的。这时,如果你还用requests来爬取内容,那......
  • Selenium-处理弹窗弹出新页面的切换问题
    WebDriverWaitwait=newWebDriverWait(driver,TimeSpan.FromSeconds(60));wait.Until(driver=>{returndriver.WindowHandles.Count==waitforHandlesCount;});stringcurrent_handler=driver.Curren......
  • selenium Java基础一
      1、下载相应的浏览器驱动包//设置环境变量SystemsetProperty("webdriver.firefox.marionete","D:\\geckodriver.exe");//初始化driverWebDriver driver=newFirefoxDriver();/请求地址driver.get("http://www.baidu.com"); 2、定位元素By.tagName()   ......