自动抓取网页数据(基于大数据开发一个网络爬虫设计的技术理论发展和应用)
优采云 发布时间: 2022-01-09 11:00自动抓取网页数据(基于大数据开发一个网络爬虫设计的技术理论发展和应用)
齐宝德
武汉大学信息工程学院,湖北武汉 430212
摘要:本文开发了一种基于大数据的网络爬虫设计,利用Python相关模块实现从网站一本书中自动下载感兴趣的图书信息的功能。包括单页图书信息下载、图书信息提取、多页图书信息下载等。
关键词:网络爬虫、信息提取、内容分析
基金资助:资助项目(新一代信息技术创新项目,课题编号2018A02016)
0 前言
网络爬虫是从互联网打开数据采集的重要手段。本文开发了一个简单的爬虫设计,利用Python的相关模块实现从某本书网站中自动下载感兴趣的书籍信息的功能。实现的主要功能有单页图书信息下载、图书信息提取、多页图书信息下载等。基于人工智能技术的新一代采集模式,操作极其简单,只需输入采集的URL,智能识别网页中的内容和分页按钮,无需配置采集规则即可完成采集的数据。
自 2004 年以来,Google 已在其应用程序中成功使用 AJAX 技术,例如 Google Discussion Groups、Google Maps、Gmail 等。同时因为该技术支持 Mozilla/Geck。,并先后被网站专业采用。GWT、Atlas、Doj等各种异步交互网络框架。也应运而生。但随之而来的是一个新问题:由于AJAX框架网站是建立在异步JavascriPt基础上的网络应用技术,传统网络搜索引擎中的网络爬虫(WebCrawler)无法解决异步交互网络网址(URL) 提取。一方面,大量基于AJAx的网站不断涌现,另一方面,这些网站网址却被搜索引擎忽略,这意味着越来越多的有意义的数据不会被搜索引擎检索到。. 这个问题也引起了*敏*感*词*学者的广泛关注:异步交互网络地址解析方法的研究对于互联网领域技术理论的发展和应用具有重要意义。
1 任务描述和数据来源
前段时间在图书馆借了很多书,借多了很容易忘记每本书的到期日。一直担心会违约,影响以后借阅,但又懒得老是登录学校图书馆借阅系统。查,所以我打算写一个爬虫来抓取我的借阅信息,把每本书的到期日爬下来,写成一个txt文件,这样每次忘记的时候可以打开txt文件查,而且每我借的时候。如果信息发生了变化,只要再次运行程序,原来的txt文件就会被新的文件覆盖,里面的内容也会被更新。详细介绍智能模式的基本操作流程。
1.1 涉及的技术:
Python版本是?2.7,同时使用了urllib2、cookielib和re三个模块。urllib2 用于创建请求,抓取网页信息,返回类似文件类型的响应对象;
cookielib用于存储cookie对象,实现模拟登录功能;re 模块提供了对正则表达式的支持,用于匹配抓取的页面信息,得到你想要的信息。
创建一个智能模式任务,输入正确的 URL,采集 任务就完成了一半。从当当搜索页面,根据关键词进行搜索,使用Python编写爬虫(如图1))自动爬取书名、出版商、价格、作者、书籍介绍搜索结果中的信息。当当网搜索页面:.
图1 Web爬虫自动爬取流程
2、单页书资料下载
2.1 网页下载
采集支持单个URL和多个URL采集,支持从本地TXT文件导入URL,支持批量生成参数URL。Python中的requests库可以自动帮助我们构造一个请求对象,用于向服务器请求资源,并返回一个响应对象,用于服务器资源。如果只需要返回 HTML 页面的内容,可以直接调用响应的 text 属性。在下面的代码中,我们首先导入 requests 库,定义当当搜索页面的 URL,并将 search关键词 设置为“机器学习”。然后使用 ?requests.get? 获取网页内容的方法。最后,打印并显示网页的前 1000 个字符。
导入请求库 test_url = '' + '机器学习',设置网页的url地址 content_page = requests.get(test_url).text ,执行页面请求,返回页面内容 print(content_page[:1000]) ,把页面的前1000个字符都打印出来并显示出来。
2.2本书内容分析
接下来开始解析页面,分析源码。使用Chrome浏览器直接打开URL Machine Learning?。然后选择任何书籍信息,右键单击“检查”按钮。不难发现,搜索结果中每本书的信息都是页面上的一个标签,点击第一个标签,发现下面还有几个。
标签,分类为“名称”、“详细信息”、“价格”等。这些标签存储了产品的标题、详细信息、价格等信息。
以提取书名信息为例,进行具体说明。单击 ?p? ?li? 下的类属性为 name 的标记 标签,我们发现书名信息存储在?a?的title属性中。名称属性值为“itemlist-title”的标签。可以使用xpath直接将上述定位信息描述为?//li/p/a[@name="itemlist-title"]/@title?。然后使用 ?lxml? 模块提取页面中的标题信息。请参阅 ?用于 xpath。
导入etree模块 page = etree.HTML(content_page) #将页面字符串解析成树形结构 book_name = page.xpath('//li/p/a[@name="itemlist-title"]/@title') # 使用xpath提取书名信息。book_name[:10] #打印提取的前10个书名。同理,我们可以提取图书的出版信息(作者、出版商、出版时间等)、当前价格、星级、评论数等。这些信息对应的xpath路径如下表所示。
接下来,我们编写一个函数?extract_books_from_content,输入一个页面内容,自动提取页面中收录的所有书籍信息。
2.3 图书数据存储
在上一节中,我们成功地从网页中提取了图书信息,并将其转换为 DataFrame 格式。您可以选择将此图书信息保存为 CSV 文件、Excel 文件或数据库。这里我们使用 ?to_csv? DataFrame 提供的保存为 CSV 文件的方法。
books_df.to_csv("./input/books_test.csv",index=None)
3、多页图书资料下载
查看搜索页面底部,输入一个关键词,一般会返回多页结果,点击任意页面按钮,观察浏览器地址栏变化。我们发现可以通过在浏览器 URL 中添加 page_index 属性来添加不同的页面。例如,如果我们搜索“机器学习”关键词,要访问第 10 页的结果,请使用以下 URL:machine learning&page_index=10
假设我们要下载一共10页的内容,我们可以通过下面的代码来完成。
import timekey_word = "machine learning" #设置搜索关键词max_page = 10 #下载书的页数_total = []for page in range(1,max_page+1):