在Python中使用Selenium进行Web爬网的初学者指南!
到2025年,全球数据将增长到175 ZB – IDC
数据总量正在增长,非结构化数据也在增长。据估计,宇宙中约80%的数据构成非结构化数据。非结构化数据是不适合任何数据模型的数据。它们千差万别-包括图像,音频,文本等等。工业界努力利用这些非结构化数据,因为它们可以包含大量信息。此信息可用于广泛的分析和有效的决策。
Web抓取是一种我们可以自动通过Internet收集信息的方法。尽管它是收集文本数据并将其转换为表格形式的有意义的捆绑包的首选方法,但它也可能会面临自身的挑战。多样性和耐用性是两个主要挑战。此外,在抓取数据时,我们应该尊重他人,因为某些网站可能不允许抓取。确保不违反任何服务条款!我们可以使用多种方法在Python中进行网页抓取。我们将讨论如何有效地使用硒来进行网络抓取,爬网网站并以表格形式获取数据。
硒概述
Selenium是功能强大的浏览器自动化工具。它支持各种浏览器,例如Firefox,Chrome,Internet Explorer,Edge,Safari。Webdriver是Selenium Python的心脏。它可以用于执行各种操作,例如自动化测试,在网页元素上执行操作,例如关闭,返回,get_cookie,get_screenshot_as_png,get_window_size等。使用Selenium进行Web抓取的一些常见用例是自动登录,提交表单元素,处理警报提示,添加/删除Cookie等。它也可以处理异常。有关硒的更多详细信息,我们可以参考官方文档
让我们立即深入硒世界!
安装
假设系统中已安装Python,我们可以使用pip / conda安装以下库
点安装硒
要么
康达安装硒
我们将使用Google Chrome驱动程序。我们可以从以下站点下载它:
https://chromedriver.chromium.org/downloads
实作
1.导入包
我们需要Selenium WebDriver,Time和Pandas Python软件包
从硒导入webdriver
导入时间
将熊猫作为pd导入
2.声明变量
我们需要定义变量以使其更易于以后使用。我们将使用实际路径。以下路径仅供参考
FILE_PATH_FOLDER ='F:.... Blogathon'
search_query ='https://www.indeed.com/q-data-scientist-jobs.html'
驱动程序= webdriver.Chrome(executable_path ='C:/.../ chromedriver_win32 / chromedriver.exe')
job_details = []
3.点击所需的URL以获取必要的信息
我们需要获取特定的Web元素标签以获取正确的信息。您可以通过在页面上单击鼠标右键,然后单击“检查”来获得此功能。我们可以单击左上角的箭头或Ctrl + Shift + C来检查特定元素并获取必要的HTML标签。一个好的或专业的HTML网站包含几乎所有与信息相关的标签的唯一标识符。我们将利用此属性来刮取网页
driver.get(搜索查询)
time.sleep(5)
job_list = driver.find_elements_by_xpath(“ // div [@ data-tn-component ='organicJob']”)
4.从工作清单中获取工作信息
我们的目标是获取职位,职位公司,职位,职位摘要和职位发布日期。我们将迭代作业列表元素,并使用硒Web驱动程序的find_elements_by_xpath属性提取所需的信息。迭代结束后,我们将退出驱动程序以关闭浏览器
对于job_list中的each_job:
#获取工作信息
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 access-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()
5.将数据保存在CSV文件中
我们将在数据框中添加适当的列,并使用数据框的to_csv属性将其另存为CSV
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)
输出量
以下CSV文件将在FILE_PATH_FOLDER变量中下载,看起来像这样-
网络刮硒
结论
因此,这是我们抓取数据的方式之一。除硒外,还有许多其他用于Web抓取的程序包/库,还有许多方法/方式可以达到期望的目标。希望本文能帮助您探索新事物。请分享您的想法和方法,以帮助您。也欢迎提出改进建议。
题库