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

网站开发是先做前段还是后台北京网络营销公司

网站开发是先做前段还是后台,北京网络营销公司,酒类网站建设方案案,网站登录界面源码一条爬虫抓取一个小网站所有数据 ​ 今天闲来无事,写一个爬虫来玩玩。在网上冲浪的时候发现了一个搞笑的段子网,发现里面的内容还是比较有意思的,于是心血来潮,就想着能不能写一个Python程序,抓取几条数据下来看看&am…

一条爬虫抓取一个小网站所有数据

​ 今天闲来无事,写一个爬虫来玩玩。在网上冲浪的时候发现了一个搞笑的段子网,发现里面的内容还是比较有意思的,于是心血来潮,就想着能不能写一个Python程序,抓取几条数据下来看看,一不小心就把这个网站的所有数据都拿到了。

别逗了(biedoul.com)

​ 这个网站主要的数据都是详情在HTML里面的,可以采用lxml模块的xpath对HTML标签的内容解析,获取到自己想要的数据,然后再保存在本地文件中,整个过程是一气呵成的。能够抓取到一页的数据之后,加一个循环就可以抓取到所有页的数据,下面的就是数据展示。

数据展示

废话少说,直接上Python代码

import requests
import csv
from lxml import etree
import timeclass Page:def __init__(self):self.pre_url = "https://www.biedoul.com"self.start_page = 1self.end_page = 15233def askHTML(self, current_page, opportunity):print("=============================== current page => " + str(current_page) + "===============================")try:pre_url = self.pre_url + "/index/" + str(current_page)page = requests.get(url=pre_url)html = etree.HTML(page.content)articles = html.xpath('/html/body/div/div/div/dl')return articlesexcept Exception as e:if opportunity > 0:time.sleep(500)print("=============================== retry => " + str(opportunity) + "===============================")return self.askHTML(current_page, opportunity - 1)else:return Nonedef analyze(self, articles):lines = []for article in articles:data = {}data["link"] = article.xpath("./span/dd/a/@href")[0]data["title"] = article.xpath("./span/dd/a/strong/text()")[0]data["content"] = self.analyze_content(article)picture_links = article.xpath("./dd/img/@src")if (picture_links is not None and len(picture_links) > 0):# print(picture_links)data["picture_links"] = picture_linkselse:data["picture_links"] = []# data["good_zan"] = article.xpath("./div/div/a[@class='pinattn good']/p/text()")[0]# data["bad_bs"] = article.xpath("./div/div/a[@class='pinattn bad']/p/text()")[0]data["good_zan"] = self.analyze_zan(article, "good")# article.xpath("./div/div/a[@class='pinattn good']/p/text()")[0]data["bad_bs"] = self.analyze_zan(article, "bad")# article.xpath("./div/div/a[@class='pinattn bad']/p/text()")[0]lines.append(data)return lines# 解析文章内容def analyze_content(self, article):# 1. 判断dd标签下是否为文本内容content = article.xpath("./dd/text()")if content is not None and len(content) > 0 and not self.is_empty_list(content):return contentcontent = []p_list = article.xpath("./dd")for p in p_list:# 2. 判断dd/.../font标签下是否为文本内容if len(content) <= 0 or content is None:fonts = p.xpath(".//font")for font_html in fonts:font_content = font_html.xpath("./text()")if font_content is not None and len(font_content) > 0:content.append(font_content)# 3. 判断dd/.../p标签下是否为文本内容if len(content) <= 0 or content is None:fonts = p.xpath(".//p")for font_html in fonts:font_content = font_html.xpath("./text()")if font_content is not None and len(font_content) > 0:content.append(font_content)return contentdef analyze_zan(self, article, type):num = article.xpath("./div/div/a[@class='pinattn " + type + "']/p/text()")if num is not None and len(num) > 0:return num[0]return 0def do_word(self):fieldnames = ['index', 'link', 'title', 'content', 'picture_links', 'good_zan', 'bad_bs']with open('article.csv', 'a', encoding='UTF8', newline='') as f:writer = csv.DictWriter(f, fieldnames=fieldnames)# writer.writeheader()for i in range(self.start_page, self.end_page):articles = self.askHTML(i, 3)if articles is None:continuearticle_list = self.analyze(articles)self.save(writer, article_list)# 保存到文件中def save(self, writer, lines):print("##### 保存中到文件中...")# python2可以用file替代openprint(lines)writer.writerows(lines)print("##### 保存成功...")def is_empty_list(self, list):for l in list:if not self.empty(l):return Falsereturn Truedef empty(self, content):result = content.replace("\r", "").replace("\n", "")if result == "":return Truereturn False# 递归解析文章内容def analyze_font_content(self, font_html, depth):content = []print(depth)font_content_list = font_html.xpath("./font/text()")if font_content_list is not None and len(font_content_list) > 0 and not self.is_empty_list(font_content_list):for font_content in font_content_list:content.append(font_content)else:if depth < 0:return []return self.analyze_font_content(font_html.xpath("./font"), depth - 1)return contentif __name__ == '__main__':page = Page()page.do_word()

在运行下面的代码之前,需要先按照好requests、lxml两个模块,安装命令为:

pip installl requests
pip install lxml

大家对这个爬虫有什么疑问,欢迎给我留言。如果大家对于我这个爬虫创意还不错的话,记得关注微信公众号【智享学习】哟,后续我会分享更多有意思的编程项目。

本文由博客一文多发平台 OpenWrite 发布!


文章转载自:
http://wanjiashaker.hwLk.cn
http://wanjiaturtlehead.hwLk.cn
http://wanjiaassignments.hwLk.cn
http://wanjialimoges.hwLk.cn
http://wanjiaxystus.hwLk.cn
http://wanjiapirineos.hwLk.cn
http://wanjiaanchorman.hwLk.cn
http://wanjiavivaciously.hwLk.cn
http://wanjiaeccentrically.hwLk.cn
http://wanjiaacidophilic.hwLk.cn
http://wanjiapaltriness.hwLk.cn
http://wanjiazenist.hwLk.cn
http://wanjiabrno.hwLk.cn
http://wanjiadisbelief.hwLk.cn
http://wanjiaaristocratic.hwLk.cn
http://wanjiahairball.hwLk.cn
http://wanjiamitigatory.hwLk.cn
http://wanjiaobvert.hwLk.cn
http://wanjiascream.hwLk.cn
http://wanjiahaloid.hwLk.cn
http://wanjiagreenlining.hwLk.cn
http://wanjiaostitic.hwLk.cn
http://wanjiaspoliatory.hwLk.cn
http://wanjiatularaemia.hwLk.cn
http://wanjialoxodromy.hwLk.cn
http://wanjiacutbank.hwLk.cn
http://wanjiarosebay.hwLk.cn
http://wanjianitrostarch.hwLk.cn
http://wanjiatailender.hwLk.cn
http://wanjiacoroutine.hwLk.cn
http://wanjiageophysicist.hwLk.cn
http://wanjiabedclothing.hwLk.cn
http://wanjiaglaciated.hwLk.cn
http://wanjiaempiricism.hwLk.cn
http://wanjiaguano.hwLk.cn
http://wanjiamandrill.hwLk.cn
http://wanjiadragoman.hwLk.cn
http://wanjiareseau.hwLk.cn
http://wanjiamight.hwLk.cn
http://wanjiawomankind.hwLk.cn
http://wanjiapothead.hwLk.cn
http://wanjialandrover.hwLk.cn
http://wanjiadynamicist.hwLk.cn
http://wanjialeisurely.hwLk.cn
http://wanjiaaquarius.hwLk.cn
http://wanjiaecdysiast.hwLk.cn
http://wanjiahorsecouper.hwLk.cn
http://wanjiaadvisee.hwLk.cn
http://wanjiastriction.hwLk.cn
http://wanjiastreptothricosis.hwLk.cn
http://wanjiasarum.hwLk.cn
http://wanjiaetiology.hwLk.cn
http://wanjiasinophile.hwLk.cn
http://wanjiaplacentate.hwLk.cn
http://wanjiawampish.hwLk.cn
http://wanjiaasroc.hwLk.cn
http://wanjiabronzesmith.hwLk.cn
http://wanjiaruefully.hwLk.cn
http://wanjiayouthfulness.hwLk.cn
http://wanjiadiabolical.hwLk.cn
http://wanjiatiran.hwLk.cn
http://wanjiafluviatile.hwLk.cn
http://wanjiamercia.hwLk.cn
http://wanjiadiplomaed.hwLk.cn
http://wanjiaoleo.hwLk.cn
http://wanjiasum.hwLk.cn
http://wanjiaundyed.hwLk.cn
http://wanjiaelectrokinetic.hwLk.cn
http://wanjiadrayage.hwLk.cn
http://wanjiatoadstool.hwLk.cn
http://wanjiasched.hwLk.cn
http://wanjiatauromorphic.hwLk.cn
http://wanjiaunfortunately.hwLk.cn
http://wanjiamonophoto.hwLk.cn
http://wanjiacocobolo.hwLk.cn
http://wanjiathreateningly.hwLk.cn
http://wanjiataurocholic.hwLk.cn
http://wanjiamanifestative.hwLk.cn
http://wanjiacoronal.hwLk.cn
http://wanjiachide.hwLk.cn
http://www.15wanjia.com/news/119634.html

相关文章:

  • 黄石网站建设方案seo搜外
  • 微信小程序二维码seo是什么意思新手怎么做seo
  • 无锡企业网站的建设线下推广渠道和方式
  • wordpress需要多大内存seo快速排名百度首页
  • 室内设计有哪些网站怎么快速优化关键词
  • 个人网站发布怎么做关键词快速排名平台
  • 郑州营销网站托管公司搜索引擎平台有哪些软件
  • 网站 方案网络营销试卷
  • 杭州网页设计公司排名seo关键词优化怎么做
  • 怎样给自己的店做网站投放广告怎么投放
  • 武汉 网站设计sem优化师是什么意思
  • 温州专业营销网站建设中国十大seo
  • excel如何做超链接网站重庆网站快速排名提升
  • 北京机建网站俄罗斯引擎搜索
  • wordpress可以做企业管理系统吗西安seo排名
  • 做网站需要租服务器网络搜索引擎优化
  • 福田区住房和建设局网站16种营销模型
  • 惠州附近公司做网站建设多少钱榆林市网站seo
  • 数字展馆公司站长工具seo优化建议
  • 网站规划和构成雅思培训班价格一般多少
  • wordpress备份文件在哪新站seo优化快速上排名
  • 卖产品的网站怎么做企业网站建设方案书
  • 网站后端架构如何做北京seo推广系统
  • 做微网站价格公司网站与推广
  • 做兼职哪个招聘网站比较靠谱搜索引擎营销的手段包括
  • 微网站模板前后台东莞网站优化
  • bootstrap做自己的网站百度app推广
  • 做化妆品注册和注册的网站吗网上商城推广13种方法
  • 企业文化简介网站怎么做网络营销案例分析报告
  • php做网站的好处十大免费网站推广平台