随着数据量的不断增长,非结构化数据的比例也在不断上升。据估计,大约80%的数据属于非结构化数据。这类数据不遵循任何数据模型,形式多样,包括图像、音频、文本等。各行业都在努力利用这些非结构化数据,因为它们蕴含着丰富的信息,可以用于广泛的分析和有效的决策制定。
网络数据抓取是一种自动化收集互联网信息的方法。虽然它可以作为收集文本数据并将其转换为有意义的表格数据的首选方法,但它也伴随着一些挑战,如多样性和持久性问题。同时,在抓取数据时也应保持尊重,因为有些网站可能不允许抓取。确保不要违反任何服务条款!可以使用Python中的多种方法进行网络数据抓取。本文将讨论如何有效使用Selenium进行网络数据抓取,以爬取网站数据并以表格形式呈现。
Selenium是一个强大的浏览器自动化工具,支持Firefox、Chrome、Internet Explorer、Edge、Safari等多种浏览器。Webdriver是SeleniumPython的核心,它可以用来执行各种操作,如自动化测试、对网页元素执行操作(如关闭、后退、获取cookies、获取屏幕截图、获取窗口大小等)。使用Selenium进行网络数据抓取的一些常见用例包括自动化登录、提交表单元素、处理警告提示、添加/删除cookies等。它还可以处理异常。有关Selenium的更多详细信息,可以参考。
假设系统中已安装Python,可以使用pip/conda安装以下库:
pip install selenium
conda install selenium
将使用Google Chrome驱动程序。可以从下载。
1. 导入包
from selenium import webdriver
import time
import pandas as pd
2. 声明变量
FILE_PATH_FOLDER = 'F:....Blogathon'
search_query = 'https://www.indeed.com/q-data-scientist-jobs.html'
driver = webdriver.Chrome(executable_path='C:/.../chromedriver_win32/chromedriver.exe')
job_details = []
3. 访问所需URL以获取必要信息
driver.get(search_query)
time.sleep(5)
job_list = driver.find_elements_by_xpath("//div[@data-tn-component='organicJob']")
for each_job in job_list:
# 获取工作信息
job_title = each_job.find_elements_by_xpath(".//h2[@class='title']/a")[0]
job_company = each_job.find_elements_by_xpath(".//span[@class='company']")[0]
job_location = each_job.find_elements_by_xpath(".//span[@class='location accessible-contrast-color-location']")[0]
job_summary = each_job.find_elements_by_xpath(".//div[@class='summary']")[0]
job_publish_date = each_job.find_elements_by_xpath(".//span[@class='date ']")[0]
# 保存工作信息
job_info = [job_title.text, job_company.text, job_location.text, job_summary.text, job_publish_date.text]
# 保存到job_details
job_details.append(job_info)
driver.quit()
job_details_df = pd.DataFrame(job_details)
job_details_df.columns = ['title', 'company', 'location', 'summary', 'publish_date']
job_details_df.to_csv('job_details.csv', index=False)