码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 如何使用爬虫做一个网站


    ​ 大家如果有兴趣做网站,在买了VPS,部署了wordpress,配置LNMP环境,折腾一番却发现内容提供是一个大问题,往往会在建站的大(da)道(keng)上泄气 ,别怕,本文解密如何使用爬虫来抓取网站内容发布在你的网站中,并提供源代码。

    ​ 大概简要说下写爬虫的几个步骤,在学习的过程中,有成就感会给你前进莫大的动力,学习爬虫也是如此,那么就从最基础的开始:

    Python有各种库提供网页爬取的功能,比如:

    urllib urllib2 Beautiful Soup:Beautiful Soup: We called him Tortoise because he taught us. lxml:lxml - Processing XML and HTML with Python Scrapy:Scrapy | A Fast and Powerful Scraping and Web Crawling Framework Mechanize:mechanize PyQuery:pyquery: a jquery-like library for python requests:Requests: HTTP for Humans

    ​ 下面我们只用python的urllib2和newspaper库来抓取文章:

    ​ 首先用urllib2将页面抓取下来,打印查看一下,新手就是要多print print print 重要的事情说三遍!

    import urllib2

    import re #re是正则表达式,用于匹配文本,提取网页首页里文章的url地址

    import sys

    reload(sys)

    sys.setdefaultencoding(‘utf-8’) #这里是设置默认的编码,一般为utf-8

    url=‘www.example.com’

    req=urllib2.Request(url)

    html=urllib2.urlopen(req).read()

    可以用print html 查看一下获取的网站首页内容,一般包含了许多杂七杂八的东东,比如广告、版权声明等等等,所以需要使用正则表达式从杂乱无章的内容中提取url

    ​ 然后需要使用正则表达式提取你需要抓取的网页首页里所包含的文章网址

    url_list = re.findall(‘

    获取的文章地址一般存在一个list列表中,你可以使用print type(url_list)来查看获取的url类型,如结果输出可能是这样子:

    [‘http://www.example.com/article1’,

    '‘http://www.example.com/article2’,

    ‘‘http://www.example.com/article3’’,

    '‘http://www.exampele.com/article4’,]

    那么我们就可以使用for循环来获取每一篇文章的url,有了文章的url就好办啦,因为往往我们用urllib2和正则表达式结合获取的是有很多噪声内容的,也就是杂质比较多。

    ​ 提取网页正文内容的算法思路是这样,根据文本每一行和上下文的的长度来判断它是否是正文内容,这样来降噪,也就是去除杂质文本,我们可以使用Goose、newspaper、readbilitybundle等开源库来获取正文内容,

    ​ 正文抽取的开源代码,基于文本密度的html2article: 我为开源做贡献,网页正文提取——Html2Article 基于标签比例的机器学习Dragnet: GitHub - seomoz/dragnet: Just the facts – web page content extraction 专注新闻类网页提取的Newspaper:GitHub - codelucas/newspaper: News, full-text, and article metadata extraction in Python 3 集成goose等三种算法的readbilitybundle GitHub - srijiths/readabilityBUNDLE: A bundle of html content extraction algorithms

    ​ 这里我们使用newspaper,我在这里参考了网页正文提取工具这篇文章,感谢作者!

    ​ 安装好newspaper后直接from newspaper import Article,然后按照以下步骤几步就可以搞掂啦!

    for i in url_list:

    a=Article(i,language=‘zh’)

    a.download()

    a.parse()

    dst=a.text

    title=a.title

    print dst

    print title

    当然文章的url列表有可能也是这样:

    [(‘http://www.example.com/article1’,’lhosdoacbw’)’

    (‘http://www.example.com/article2’,’e83ry97yfr7fg9’)

    (‘http://www.example.com/article3’,’jdoqf8yyrfrohr’)

    (‘http://www.example.com/article4’,’djq0u9u0qfh8q’)]

    要获取文章的url也很简单,使用range函数

    for i in range(len(url_list)):

    urls=url_list[i][0]

    a=Article(urls,language=‘zh’)

    a.download()

    a.parse()

    dst=a.text

    title=a.title

    print dst

    print title

    ​ 也有很多坑,主要是环境配置的安装的时候会有各种不成功,比如Scrapy安装的时候会要求预装很多其他的库,烦不胜烦,Windows系统那就更麻烦了,我用ubuntu配置环境没成功,怒而转向我在搬瓦工买的vps,装了centos系统后就方便多了,当然还有python版本的问题,centos6.5默认python版本是python2.6,所以需要升级并设置默认环境和版本。

    ​ 这样再结合wordpress xmlrpc就可以把爬取的内容发送到你的网站了,再使用Linux系统里的定时执行任务的程序crond,设置每个小时执行一次任务,写多个爬虫分别爬取不同的站点在不同的时间段定时执行,简直不能再酸爽!!!

    最后

    分享一份Python的学习资料,但由于篇幅有限,完整文档可以扫码免费领取!!!

    1)Python所有方向的学习路线(新版)

    总结的Python爬虫和数据分析等各个方向应该学习的技术栈。

    在这里插入图片描述

    比如说爬虫这一块,很多人以为学了xpath和PyQuery等几个解析库之后就精通的python爬虫,其实路还有很长,比如说移动端爬虫和JS逆向等等。

    img

    (2)Python学习视频

    包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然达不到大佬的程度,但是精通python是没有问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

    在这里插入图片描述

    (3)100多个练手项目

    我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

    在这里插入图片描述

    。

  • 相关阅读:
    jQuery学习:事件委托--新添加的元素没有监听
    NXP实战笔记(七):S32K3xx基于RTD-SDK在S32DS上配置ICU输入捕获
    java计算机毕业设计springboot+vue股票交易模拟系统
    开源教育论坛| ChinaOSC
    今天,我想去一个平行世界
    【2023提前批 之 面经】~ 锐捷
    ArcGIS 10.7之 栅格影像裁剪操作
    godot引擎学习4
    [附源码]SSM计算机毕业设计火车售票系统论文JAVA
    odoo 按钮打印pdf报表
  • 原文地址:https://blog.csdn.net/javasdn/article/details/134055194
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号