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

石家庄营销型网站制作网站开发的工作环境

石家庄营销型网站制作,网站开发的工作环境,wordpress video模板,电子商务网站建设计划最近Python大火#xff0c;为了跟上时代#xff0c;试着自学了下。Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv、json等文件中。今天我们就试着用Scrapy来爬取简书某位作者的全部文章。在本篇教程中#xff0c;我们假定您已经…最近Python大火为了跟上时代试着自学了下。Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv、json等文件中。今天我们就试着用Scrapy来爬取简书某位作者的全部文章。在本篇教程中我们假定您已经安装好Scrapy。 如若不然请参考 安装指南 。1.创建项目在开始爬取之前我们必须创建一个新的Scrapy项目我这里命名为jianshu_article。打开Mac终端cd到你打算存储代码的目录中运行下列命令://Mac终端运行如下命令scrapy startproject jianshu_article2.创建爬虫程序//cd到上面创建的文件目录cd jianshu_article//创建爬虫程序scrapy genspider jianshu jianshu.com/*文件说明scrapy.cfg 项目的配置信息主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)items.py 设置数据存储模型用于结构化数据如Django的Modelpipelines 数据处理行为如一般结构化的数据持久化settings.py 配置文件如USER_AGENT(模拟浏览器应对网站反爬)递归的层数、并发数延迟下载等spiders 爬虫目录如创建文件编写爬虫规则*/为了方便编写程序我们用Pycharm打开项目执行完上面的命令程序会自动创建目录及文件其中生成了一个jianshu.py的文件后面我们主要逻辑都将写在此文件中。jianshu.py3.设置数据模型双击items.py文件。找到你想爬取的简书作者首页如我自己的首页https://www.jianshu.com/u/6b14223f1b58用谷歌浏览器打开空白处鼠标右击单击“检查”进入控制台开发者模式打开控制台.png通过分析网页源码我们大概需要这些内容# -*- coding: utf-8 -*-# Define here the models for your scraped items## See documentation in:# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass JianshuArticalItem(scrapy.Item):avatar scrapy.Field() #头像nickname scrapy.Field() #昵称time scrapy.Field() #发表时间wrap_img scrapy.Field() #封面(缺省值)title scrapy.Field() #标题abstract scrapy.Field() #正文部分显示read scrapy.Field() #查看人数comments scrapy.Field() #评论数like scrapy.Field() #喜欢(点赞)detail scrapy.Field() #文章详情urlpass如此数据模型就创建好了后面运行爬虫的时候我得到的数据将存进模型对应的位置。4.分析网页源码编写爬虫因为本人比较懒很少写文章文章数比较少为了呈现分页的效果我在简书选取了一位作者CC老师_MissCC的主页进行爬取。我们通过分析URL可以找到一些特征作者的URL为https://www.jianshu.com/u/ 作者ID作者主页URL.png文章URL.png虽然我们在浏览器直接打开作者的URL鼠标滚轮往下滚动会动态加载下一页直至最后一篇文章URL还是保持不变。但是作为Scrapy爬虫貌似只能拿到第一页那么如何做到呢以我个人多年的开发经验我尝试在URL后面拼接一个page参数加上页数果不其然能请求到不同的数据。拼接参数page拿到分页数据.png找到这些规律我们就可以通过分析HTML源码拿到我们想要的数据了。首先我们回到jianshu.py这个文件导入模型//从项目名 jianshu_article的文件items.py导入JianshuArticleItem类from jianshu_article.items import JianshuArticleItem设置必要参数发起首次请求# -*- coding: utf-8 -*-import scrapyfrom jianshu_article.items import JianshuArticleItemclass JianshuSpider(scrapy.Spider):name jianshuallowed_domains [jianshu.com]user_id 1b4c832fb2caurl https://www.jianshu.com/u/{0}?page1.format(user_id)start_urls [url,]def parse(self, response):#用户头像c response.xpath(//div[classmain-top]/a[classavatar]/img/src).extract_first()print(c)pass至此终端运行命令scrapy crawl jianshu理论上可以打印网页内容。实则不然没有请求到任何数据终端会打印一些日志信息日志.png不难发现报了403的问题和HTTP status code is not handled or not allowed的问题,导致Closing spider (finished)爬虫终止。通过万能百度我知道大概是网站做了一些相应的反爬虫的措施导致的。对症下药我们只需要在settings.py做一些相应修改就可以了User_Agent中文名为用户代理简称 UA它是一个特殊字符串头使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。通俗点讲我们配置这个字段的目的就是为了伪装成浏览器打开网页达到骗过目标网站的监测。USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36CONCURRENT_REQUESTS 1 #并发数DOWNLOAD_DELAY 5 #为了防止IP被封我们5秒请求一次HTTPERROR_ALLOWED_CODES [403] #上面报的是403就把403加入#默认为True就是要遵守robots.txt 的规则这里我们改为FalseROBOTSTXT_OBEY False做了相应的修改我们再次执行爬虫命令scrapy crawl jianshu 看日志打印获取到头像。获取到头像.png既然网页数据能爬取成功我们后面要做的只是分析网页源码了下面就不一一去分析了体力活。当然在此之前你要对xpath有一定的了解。下面引用Scrapy中文官网介绍从网页中提取数据有很多方法。Scrapy使用了一种基于 XPath 和 CSS 表达式机制: Scrapy Selectors。 关于selector和其他提取机制的信息请参考 Selector文档 。这里给出XPath表达式的例子及对应的含义:/html/head/title: 选择HTML文档中 标签内的 元素/html/head/title/text(): 选择上面提到的 元素的文字//td: 选择所有的 元素//div[classmine]: 选择所有具有 classmine 属性的 div 元素上边仅仅是几个简单的XPath例子XPath实际上要比这远远强大的多。 如果您想了解的更多我们推荐 这篇XPath教程 。通过上面的介绍相信你可以做接下来的爬虫工作了下面贴上jianshu.py的全部代码以供参考# -*- coding: utf-8 -*-import scrapyfrom jianshu_article.items import JianshuArticleItemclass JianshuSpider(scrapy.Spider):name jianshuallowed_domains [jianshu.com]user_id 1b4c832fb2ca #替换此用户ID可获取你需要的数据或者放开下一行的注释#user_id input(请输入作者id\n)url https://www.jianshu.com/u/{0}?page1.format(user_id)start_urls [url,]def parse(self, response):# [关注,粉丝,文章]a response.xpath(//div[classmain-top]/div[classinfo]/ul/li/div/a/p/text()).extract()print(a)# [字数,收获喜欢]b response.xpath(//div[classmain-top]/div[classinfo]/ul/li/div/p/text()).extract()print(b)# 大头像c response.xpath(//div[classmain-top]/a[classavatar]/img/src).extract_first()print(c)# 用户名d response.xpath(//div[classmain-top]/div[classtitle]/a/text()).extract_first()print(d)# 性别e response.xpath(//div[classmain-top]/div[classtitle]/i/class).extract_first()print(e)# 获取文章总数计算页数。(简书网站默认每页是9组数据)temp int(a[2])if (temp % 9 0):count temp // 9 1else:count temp // 9print(总共 str(count) 页)base_url https://www.jianshu.com/u/{0}?page{1}for i in range(1, count 1):i count 1 - i #理论上正序1~count就是按顺序获取的但是获取的数据是倒置的所以我们获取count~1的数据得到的数组就是按照网页形式1~count页码排序的了yield scrapy.Request(base_url.format(self.user_id, i), dont_filterTrue, callbackself.parse_page)#迭代返回每页的内容def parse_page(self, response):for sel in response.xpath(//div[idlist-container]/ul/li):item JianshuArticleItem()item[wrap_img] sel.xpath(a/img/src).extract_first()item[avatar] sel.xpath(div//a[classavatar]/img/src).extract_first()item[nickname] sel.xpath(div//a[classnickname]/text()).extract_first()item[time] sel.xpath(div//span[classtime]/data-shared-at).extract_first()item[title] sel.xpath(div/a[classtitle]/text()).extract_first()item[abstract] sel.xpath(div/p[classabstract]/text()).extract_first()item[read] sel.xpath(div/div[classmeta]/a[1]/text()).extract()[1]item[comments] sel.xpath(div/div[classmeta]/a[2]/text()).extract()[1]item[like] sel.xpath(div/div[classmeta]/span/text()).extract_first()item[detail] sel.xpath(div/a[classtitle]/href).extract_first()yield item至此爬虫代码编写完毕如果要把获取的数据保存下来你可以终端执行如下命令/*此命令用于把爬取的数据保存为json文件格式当然你也可以保存为别的文件格式。Scrapy官方列出的文件格式有如下几种(json, jsonlines, jl, csv, xml, marshal, pickle)。温馨提示如果要再次爬取最好换一个文件名或者清空数据再爬取因为第二还是写入上一个文件数据不会覆盖会堆积在上次获取的下面造成json文件格式报错。*/scrapy crawl jianshu -o data.json程序执行完后我们可以在文件目录看到新生成的data.json文件双击可以看到我们要获取的全部数据执行爬虫获取到的数据.pngjson解析数据跟网站上的完全吻合.pnggithub地址https://github.com/leesonp/jianshu_article至此以上就是本文的全部内容谢谢阅读。
http://www.sadfv.cn/news/221383/

相关文章:

  • 手机网站 微信网站企业做网站分哪几种
  • 做积分商城网站seo教程网站优化
  • 自己建网站怎么做影视资源wordpress 搜索 分词
  • 网站开发个人基本情况1000字开发一个小程序游戏要多少钱
  • 网站外链怎么购买网站建设计划方案模板下载
  • 二手物品交易网站开发环境网站制作前言公司
  • 做网站后的总结宿迁司法拍卖房产网
  • 虚拟主机和网站空间网页游戏开服表怎么删
  • 新乡做网站的seo职位信息
  • 手机网站开发视频个人网页制作设计模板
  • 亚马逊品牌网站怎么做平台商城网站建设
  • 抚顺网站设计郑州发布
  • 智慧团建网站注册登录入口手机上怎么做网页
  • 1简述网站建设流程图部分网站为什么网页打不开的原因及解决方法
  • 两个域名同时指向一个网站如何建立自己的公司网站
  • 用自己的电脑建设网站安阳信息网官网
  • 主题网站设计与制作中国软件外包网
  • 沈阳企业网站wordpress如何添加安装导航
  • 网站代理登录域名wordpress 密码加密方式
  • 常平网站仿做中国建设银行湖北省分行网站
  • 做课题查新网站一个seo良好的网站其主要流量往往来自
  • 网站如何做反爬淘宝指数
  • 移动端h5网站开发框架分类目录网站做排名
  • 搜索推广网站哪家做的最好wordpress图片超链接
  • 丹棱县 网站建设网站建设服务费应计入什么科目
  • 网站开发主要框架 后端wordpress 当前位置 页面
  • 贵阳建站公司嘉兴ai人工智能开发网站建设
  • dedecms 旅游网站模板wordpress可视化编辑主题
  • 网站建设策划模板网站是专门对生活中的一些所谓常识做辟谣的
  • 韶关网站建设的公司wordpress lover