关于使用selenium+python简单获取前程无忧数据

一.设置好编辑环境

使用selenium时配置好浏览器插件确保在同一目录下并且与浏览器是同一版本,以谷歌为例子,下载好对应浏览器的版本。其次使用pycharm进行代码编辑。
安装驱动(windows系统)
写得挺详细就不写了。

二.上实例

1.对网站第一页进行观察

我爬取数据使用的地址在这里插入图片描述
你会发现所有第一页的数据在同一class:j_joblist中,然后继续观察
在这里插入图片描述
你会再次发现网页数据都在同一标签中,那么获取数据就相当容易了,也不用去抓包等等。

2.然后对第二页及n页进行观察

每一页只有一个的div数字不一样
会发现
每一页只有一个的div数字不一样,使用遍历,想要多少页就获取多少页

2.进行代码编写

def parse_data():

    divs=driver.find_elements_by_xpath('.//div[@class="j_joblist"]/div')

    for div in divs:
        for i in range(1,51):
            title = div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/a/p[1]/span[1]').text  # 标题`
            price = div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/a/p[2]/span[1]').text  # 价格
            business = div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/div[2]/a').text  # 店名
            location = div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/a/p[2]/span[2]').text  # 地名
            detail_url=div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/div[2]/a').get_attribute('href')#网址
            print(title,price,business,location,detail_url)
            dit = {
                '标题': title,
                '价格':price,
                '店名': business,
                '地名': location,
                '网址': detail_url,

            }
            csv_writer.writerow(dit)
            print(title,price,business,location,detail_url)

执行就可以获取到固定的数据
在这里插入图片描述

当然前面的导入包等等没去载图出来,还要模拟人工操作浏览器滑动,不然容易报错

 for x in range(1, 30, 4):  # 1 3 5 7 9  在你不断的下拉过程中, 页面高度也会变的
        time.sleep(1)
        j = x / 9  # 1/9  3/9  5/9  9/9
        # document.documentElement.scrollTop  指定滚动条的位置
        # document.documentElement.scrollHeight 获取浏览器页面的最大高度
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)

最后进行数据的收集保存到表格中

f = open(f'qc.csv', mode='a', encoding='utf-8', newline='')
# 快速替换小技巧  选择要替换内容 按住ctrl + R 输入 正则表达式匹配规则 替换
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '价格',
    '店名',
    '地名',
    '网址',
])

最后进行数据的收集保存到表格中写入表头

3.最后综合代码进行运行

from selenium import webdriver
import time
import csv
f = open(f'qc.csv', mode='a', encoding='utf-8', newline='')
# 快速替换小技巧  选择要替换内容 按住ctrl + R 输入 正则表达式匹配规则 替换
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '价格',
    '店名',
    '地名',
    '网址',
])
csv_writer.writeheader()
def drop_down():
    """执行页面滚动的操作"""  # javascript
    for x in range(1, 30, 4):  # 1 3 5 7 9  在你不断的下拉过程中, 页面高度也会变的
        time.sleep(1)
        j = x / 9  # 1/9  3/9  5/9  9/9
        # document.documentElement.scrollTop  指定滚动条的位置
        # document.documentElement.scrollHeight 获取浏览器页面的最大高度
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)
driver=webdriver.Chrome()
driver.get('https://search.51job.com/list/260200,000000,0000,00,9,99,python,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=')
drop_down()
time.sleep(3)  # 延时三秒钟
def parse_data():

    divs=driver.find_elements_by_xpath('.//div[@class="j_joblist"]/div')

    for div in divs:
        for i in range(1,51):
            title = div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/a/p[1]/span[1]').text  # 标题`
            price = div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/a/p[2]/span[1]').text  # 价格
            business = div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/div[2]/a').text  # 店名
            location = div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/a/p[2]/span[2]').text  # 地名
            detail_url=div.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div['+str(i)+']/div[2]/a').get_attribute('href')#网址
            print(title,price,business,location,detail_url)
            dit = {
                '标题': title,
                '价格':price,
                '店名': business,
                '地名': location,
                '网址': detail_url,

            }
            csv_writer.writerow(dit)
            print(title,price,business,location,detail_url)
for page in range(0,20):
    print(f'------正在爬第{page+1}页-----')
    parse_data()
    time.sleep(2)
    driver.find_element_by_xpath('/html/body/div[2]/div[3]/div/div[2]/div[4]/div[2]/div/div/div/ul/li[8]/a').click()

运行成功你会发现同文件目录下多了一个qc.csv的文档,点开你就可以看到获取到的数据。
在这里插入图片描述

然后就成功了 这个网站比较容易没有那么复杂。

总结:

第一次写,后面还会继续更新,希望对正在学的小伙伴有所帮助。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
你好!使用SeleniumPython进行自动化测试是非常常见的。Selenium是一个用于Web应用程序测试的强大工具,而Python是一种流行的编程语言,可以与Selenium很好地配合使用。 要使用SeleniumPython,首先需要安装Selenium库。你可以通过运行以下命令来安装: ``` pip install selenium ``` 安装完成后,你还需要下载相应浏览器的驱动程序。Selenium支持多种浏览器,如Chrome、Firefox等。你可以根据你使用的浏览器版本下载相应的驱动程序,并将其添加到系统路径中。 接下来,你可以使用Python编写代码来执行各种自动化任务。下面是一个简单的示例,演示了如何使用Selenium打开一个网页并获取页面标题: ```python from selenium import webdriver # 创建Chrome浏览器实例 driver = webdriver.Chrome() # 打开网页 driver.get("https://www.example.com") # 获取页面标题 title = driver.title print("页面标题:", title) # 关闭浏览器实例 driver.quit() ``` 以上示例中,我们首先导入了webdriver模块,然后创建了一个Chrome浏览器实例。接下来,我们使用`get`方法打开了一个网页,并使用`title`属性获取了页面的标题。最后,我们使用`quit`方法关闭了浏览器实例。 除了打开网页和获取页面元素外,Selenium还提供了丰富的API,可以模拟用户操作,如点击、输入文本等。你可以根据具体的需求,使用Selenium的API完成更复杂的自动化任务。 希望这个简单的示例对你有所帮助!如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

llyd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值