当前位置: 首页 > news >正文

企业网站建设该怎么描述驻马店河南网站建设

企业网站建设该怎么描述,驻马店河南网站建设,注册网站授权书怎么写,贵阳网站定制电话这期的爬虫是爬取“简书”的搜索结果页#xff0c;篇幅将会分为两部分来写#xff0c;第一部分是爬虫部分#xff0c;主要涉及搜索文章的提取和数据保存#xff0c;第二部分涉及基本的数据分析和可视化#xff0c;本篇文章属于爬虫篇。 爬虫源代码 首先看一下整个爬虫的源…这期的爬虫是爬取“简书”的搜索结果页篇幅将会分为两部分来写第一部分是爬虫部分主要涉及搜索文章的提取和数据保存第二部分涉及基本的数据分析和可视化本篇文章属于爬虫篇。 爬虫源代码 首先看一下整个爬虫的源代码每个函数的用处已经写在函数说明中后面也会进行代码解读。 # -*- coding: utf-8 -*- import requests import json from urllib.parse import quote from pymongo import MongoClient 简书搜索爬虫 输入搜索关键词将搜索到的所有文章爬取下来 数据保存到 mongodb 中 class JianshuSearch(object):def __init__(self, db_name, coll_name, key, host127.0.0.1, port27017):self.headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36}self.url http://www.jianshu.com/search/do?q{key}typenotepage{page}order_bydefaultself.key quote(key)self.start_page 1self.host hostself.port portself.db_name db_nameself.coll_name coll_namedef get_total_pages(self):提取总页码数url self.url.format(keyself.key, pageself.start_page)html requests.get(url, headersself.headers).textdata json.loads(html)total_pages data[total_pages]return total_pagesdef get_infos(self, page):提取单个页面的文章信息格式为dicturl self.url.format(keyself.key, pagepage)html requests.get(url, headersself.headers).textdata json.loads(html)entries data[entries]for each in entries:self.save_infos(each)def save_infos(self, entry):保存一个文章的信息coon MongoClient(hostself.host, portself.port)coll coon[self.db_name][self.coll_name]coll.insert(entry)def main(self):主函数循环迭代进行翻页提取所有页码的信息并保存到数据库total_pages int(self.get_total_pages())for i in range(1, total_pages 1):self.get_infos(i)print(总计{}页已经爬完{}页.format(total_pages, i))if __name__ __main__:DB_NAME jianshuCOLL_NAME search_resultkey pythonspider JianshuSearch(keykey, db_nameDB_NAME, coll_nameCOLL_NAME)spider.main() 爬虫思路 基本思路 爬虫的基本思路依然分为3个主要步骤 找到入口即起始页面的 URL找到翻页的规律选择有效的方式进行翻页提取所有信息查看页面主要信息 首先在简书的搜索框中输入任意一个关键词例如“Python”然后点击搜索按钮查看结果页面。 结果页面如下图所示 可以看到搜索的结果包含了很多种类的信息有“相关用户”、“相关专题”和“相关文章”并且文章的排序还可以选择条件。 由于这里只需要提取搜索文章的信息因此可以先看一下搜索到的文章列表中包含哪些可以收集的信息以便后续查找和保存数据。 找到入口——第一个 URL 当然一般来说很多时候我们看到的信息其实并不是眼前的页面给我们的信息而是当前页面从其他地方“搬”过来的信息。如果使用或者知道ajax 的用法这句话就很好理解当然不理解也无妨并不影响后续操作。 打开浏览器的开发者界面可以使用快捷键 F12。刷新一下搜索的页面然后进入 Network看看浏览器中加载了什么页面。 一般可以先从 Doc中查看也就是网页源代码但是这次的爬虫可以看到源代码中并没有搜索的结果页于是可以继续查看 js发现好像也没有新加载页面继续查看 XHR终于找到了刷新页面加载出来的页面请求具体看截图 看截图中的编号编号1就是页面加载的地方编号2可以看到请求的 URL编号3就是 URL 的组成可以从中查看链接的构成规律这里的规律就是链接中有2个关键参数第一个参数就是搜索的关键词这里用 qPython表示然后第二个参数就是当前页码这里是 page2从这里就可以直接联想到如果知道总页码数那就可以使用循环来得到所有页码的 URL。编号4是请求的方式这里是 GET。 选择翻页方式 经过这个页面就可以把整个爬虫的思路理清楚了 首先想办法找到总页码数然后提取单页的信息并且保存到数据库中使用循环方式提取所有页的信息源码解读 首先需要导入相关库 import requests import json from urllib.parse import quote from pymongo import MongoClient这4个库的作用分别是 网页请求将字符串格式转换成 json 格式将一般字符串转换成 URL 可以读取的格式python 连接 mongodb 的依赖爬虫类的创建 由于这个爬虫是创建了一个爬虫类所以需要按照 Python类的规范来首先初始化类通过函数来实现 def __init__(self, db_name, coll_name, key, host127.0.0.1, port27017):self.headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36}self.url http://www.jianshu.com/search/do?q{key}typenotepage{page}order_bydefaultself.key quote(key)self.start_page 1self.host hostself.port portself.db_name db_nameself.coll_name coll_name 这里给类传递了5个参数其中3个是没有给予默认值的参数2个是给了默认值的参数每个参数的含义 key搜索的关键词db_name数据库名称coll_name数据表名称hostport链接数据库的地址和端口提取总页码数 可以通过爬取任意一个页码然后打印一下提取的信息看看信息的构成。 通过打印信息可以发现每个页面的信息都是一个字典格式因此可以通过json模块来转换成 Python 的 dict 格式然后可以发现每页都有一个参数是“total_pages”这个参数就提供了当前搜索的结果总页码数因此可以通过函数来提取这个参数的值 def get_total_pages(self):提取总页码数url self.url.format(keyself.key, pageself.start_page)html requests.get(url, headersself.headers).textdata json.loads(html)total_pages data[total_pages]return total_pages 提取当个页面的信息并保存到数据库 由于每个页面的信息都是一个 json 格式所以信息的提取方式很简单直接从字典中提取就行了 def get_infos(self, page):提取单个页面的文章信息格式为dicturl self.url.format(keyself.key, pagepage)html requests.get(url, headersself.headers).textdata json.loads(html)entries data[entries]for each in entries:self.save_infos(each) 函数的思路很简单首先通过 requests 请求网页然后得到一个json类型的信息但是由于这个信息的格式是 str 所以需要使用 json.loads 方法转换成 dict 格式。然后使用字典的键值对关系提取到总页码数就可以了。 这个函数的最后面用到了一个保存信息的函数也就是后面要说的将数据保存到数据库中。 def save_infos(self, entry):保存一个文章的信息coon MongoClient(hostself.host, portself.port)coll coon[self.db_name][self.coll_name]coll.insert(entry)保存到数据库的函数需要传入一个参数是一个 dict 类型这个参数正好可以理解为提取的单个文章的信息。 首先按照 mongodb 的连接方式建立一个连接这个连接就使用到了创建类的时候传入的数据库的参数然后使用 insert()方法就可以插入数据了。 循环提取所有页面的信息 讲过上述的的函数已经可以提取总页码数也可以提取并保存单个页码的文章信息了剩下的就是使用循环来提取所有页码的信息了于是可以把这个过程写到一个主函数中 def main(self):主函数循环迭代进行翻页提取所有页码的信息并保存到数据库total_pages int(self.get_total_pages())for i in range(1, total_pages 1):self.get_infos(i)print(总计{}页已经爬完{}页.format(total_pages, i))为了方便查看爬虫的进度在每爬取一页信息可以打印当前的进度。 运行爬虫 最后一段代码就是运行爬虫首先给定一些需要传递到爬虫类中的参数然后启动爬虫的主程序即可看到爬虫结果。 查看数据库中信息 “Python”这个字段在简书中有100页的数据如果没有猜错这个100页应该是简书默认提供的最大页码数所以爬虫运行的时间并不长爬完之后可以使用可视化工具看看数据库中的信息。 数据库中信息如图 后记从数据库中可以查看到一些有效信息包括文字的标题、链接、发布时间、作者的信息、评论数、阅览量、喜欢数等。虽然这些数据并没有什么研究价值但是本着练手的想法后续会使用 Python 基本的数据分析工具来对爬取的信息进行可视化分析。 查看原文 转载于:https://www.cnblogs.com/gopythoner/p/7760548.html
http://www.sadfv.cn/news/11698/

相关文章:

  • 网上招聘网站开发报告郑州量站站软件开发有限公司
  • 武义住房和城乡建设局网站网站经营性备案多少钱
  • 网站外链优化方法腾讯云服务器centos做静态网站
  • 房地产管理局网站百度地图wordpress
  • 直播网站建设书籍济南网站建设公司哪家好一点
  • 嘉兴网站排名优化开发app需要多少资金
  • 近期时事新闻怎么做淘宝客网站优化
  • wordpress自带水印肇庆网站快速排名优化
  • 山西太原网站建设公司网站怎么做自己站长
  • 建设文化网站的目的和意义宝塔面板怎么建设网站
  • 哈尔滨做网站的公司怎么查询网站的备案号
  • 全国建设部官方网站济南 网站定制
  • 西安建站模板厂家国外服务器租赁
  • html5国内网站建设厦门网络营销推广
  • 展示型网站建设服务网站建设 制作教程 pdf
  • 网站建设经费管理教育行业展示网站模板
  • 杭州建设网站一般网站服务器配置
  • 药企做网站安徽旅游在线网站建设
  • 乐达淄博网站建设制作潍坊企业免费建站
  • 网站的互动wordpress增加板块
  • php网站开发最新需求网站维护要做哪些工作
  • 培训学校 网站费用wordpress更新以后进不去了
  • dw怎么做网站注册登入页面北京智能网站建设企业
  • wordpress php5.5企业如何进行搜索引擎优化
  • 汕头网站推广找谁钻井网站建设
  • 电商网站设计内容新品推广计划与方案
  • 有哪些建站的公司word网站超链接怎么做
  • 商城网站开发公司排名做建材交易网站的上市公司
  • 长沙哪家公司做网站vue使用于网站开发
  • 备案 网站名称什么用网站搭建修改收费依据