如何使用爬虫做一个网站

news2025/4/21 20:32:53

​ 大家如果有兴趣做网站,在买了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(‘<a target=“_blank” href="(.*) " title=’,html)#示例

获取的文章地址一般存在一个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多个练手项目

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1136849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

找免费商用字体,就上这5个网站,再也不怕侵权了。

很多新手设计师没有版权意识&#xff0c;网上找了字体直接使用结果被发律师函&#xff0c;造成巨大损失&#xff0c;建议大家使用前先去查询一下这款字体是否能商用&#xff0c;另外就是去找一些可以免费商用的字体使用。如何才能找到免费商用字体呢&#xff1f; 下面我就把我…

迅镭激光万瓦切割设备中标全球轨交装备龙头中国中车

轨道交通装备被称之为国之重器&#xff0c;历经60多年的发展&#xff0c;我国轨交装备制造业已成为自主创新程度最高、国际创新竞争力最强、产业带动效应最明显的行业之一。 而承担我国现代化轨道交通装备研发制造的中国中车股份有限公司(以下称“中国中车”)&#xff0c;也在用…

微前端qiankun接入Vue和React项目

主应用&#xff1a;Vue3Webpack 1、创建主应用&#xff1a; npx vue create main-vue3-app 2、安装qiankun npx yarn add qiankun 3、项目中使用的vue、vue-router、qiankun依赖如下&#xff0c;webpack版本为5.x 4、在根目录下创建vue.config.js const { defineConfig }…

一张逻辑图讲清楚OS在做什么:浅谈OS

本文旨在通过思维导图的方式、对os主要的知识点简短介绍&#xff0c;让读者能短时间快速把os是什么、干什么给串起来。当别人问起来时&#xff0c;可以用3-5分钟讲清楚。如果读者对os有更加深入的兴趣&#xff0c;可点对点针对某一内容再做进一步研究。通常对于互联网从业者来说…

TSINGSEE青犀老旧小区升级改造AI+视频监控方案

一、背景与需求 近年来&#xff0c;政府高度重视城镇老旧小区改造工作&#xff0c;强调要加快老旧小区改造&#xff0c;不断完善城市管理和服务&#xff0c;彻底改变粗放型管理方式&#xff0c;让人民群众在城市生活得更方便、更舒心、更美好。老旧小区升级改造面临以下问题&a…

绿米Aqara S1【妙控开关 S1E】的破解方法

概述 为了更好地向友商学习,我们采购了绿米的一块妙控开关 S1E的屏幕,用来研究。 首先上图看一下他的设计及推广的说明: 产品详情,参见Aqara的官方网站: 具体链接:妙控开关 S1E|Aqara 全屋智能 硬件概要 这里我就直接上硬件的说明了。 官方的设备参数如下: 我来写…

SRS srs-bench

1 srs-bench 音视频压测工具&#xff0c;包括RTMP/FLV/WebRTC/GB28181等&#xff0c;未来还会完善。 SB(SRS Bench) is a set of benchmark and regression test tools, for SRS and other media servers, supports HTTP-FLV, RTMP, HLS, WebRTC and GB28181. For RTMP/HLS/F…

7.MySQL复合查询

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 复合查询 基本查询回顾 多表查询 自连接 子查询 单行子查询 多行子查询 多列子查询 在from子句中使用子查询 合并查询 union union all 实战OJ 复合查询 前面我们讲解的mysql表的查询都是对一张表进行查询…

图像恢复介绍(持续更新)

前言 噪声的产生是信号在采集、传输以及记录过程中&#xff0c;受到成像设备自身因素和外界环境的影响而产生的。现实中的噪声是随机分布的&#xff0c;事实上&#xff0c;噪声无法完全去除&#xff0c;只能使得重现信号尽可能的接近原始信号&#xff0c;因此&#xff0c;去噪严…

JavaSpringbootmysql农产品销售管理系统47627-计算机毕业设计项目选题推荐(附源码)

摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用Java技术建设农产品销售管理系统。…

Matplotlib | 高阶绘图案例【4】- 2023年编程语言榜单Python稳坐第一

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. 数据处理2.1 高效数据2.2 保留需要的列 &#x1f3f3;️‍&#x1f308; 3. 绘图3.1 绘制图布&#xff0c;添加3个子图3.2 绘制子图1条形图3.3 子图1条形图添加数据标签3.4 绘制子图2条…

toluaframework中C#怎么调用Lua的方法以及无GC方法

toluaframework中C#怎么调用Lua的方法 问题Util.CallMethodLuaManager.CallFunctionLuaFunction.LazyCall 解决方案LuaFunction脚本无GC消耗的调用 用法总结 问题 用过luaframework框架的人应该都知道框架提供了Util的工具类&#xff0c;工具类提供了一个方法就是Util.CallMet…

口袋参谋:30秒导出淘宝同行的全部数据,是如何做到的?

作为一名淘宝天猫的商家&#xff0c;想要了解产品当下的市场行情数据。 则可以通过&#xff0c;【同类目数据导出】功能&#xff1a; 一键获取相同类目下&#xff0c;所有店铺市场推广数据。 ​【同类目数据导出】功能使用 1、安装插件 2、登录千牛后台→数据→生意参谋→市…

C# 海康威视平台API接入 和网页摄像头部署

文章目录 前言相关网址综合安防管理平台网址获取Appkey和Secret/密码和密钥测试个人魔改工具类 海康视频接入获取摄像头Id下载海康Web插件原生Html导入网页设置 JS封装封装代码使用设置成功&#xff01; 前言 最近有个需求是将海康的摄像头视频画面传到我们平台上&#xff0c;…

C++简单的栈模型示例

前言 最近在学习C&#xff0c;由于该语言是手动管理内存&#xff0c;所以要对内存池、栈、数组等相关模型要多多了解&#xff0c;下面是一个简单的栈模型。 // dome.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #define _CRT_SECURE_NO_WARNIN…

【踩坑记】js用a.push(...b)进行数组组合报栈溢出

建议&#xff1a;进行数组合并时&#xff0c;若不确定数组最终长度或者数组长度超过下述表中数据&#xff0c;建议使用 concat 最近踩了个坑&#xff0c;在进行数组合并时出现了栈溢出的报错。 示例代码&#xff1a; const arr [] for (let i 0; i < 500000; i) {arr.pu…

iOS自动混淆测试处理笔记

1 打开 ipa&#xff0c;导出ipa 路径和配置文件路径会自动填充 2 点击 开始自动混淆测试处理 自动混淆测试是针对 oc 类和oc方法这两个模块进行自动混淆ipa&#xff0c;并ipa安装到设备中运行&#xff0c;通过检测运行ipa包是否崩溃&#xff0c;来对oc类和oc方法进行筛选。如果…

COSCon'23 真·黑客马拉松准备出发!

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…

【java学习—九】模板方法(TemplateMethod)设计模式(4)

文章目录 1. 在java中什么是模板2. 模板方法设计解决了什么问题&#xff1f;3. 代码化理解 1. 在java中什么是模板 抽象类体现的就是一种模板模式的设计&#xff0c;抽象类作为多个子类的通用模板&#xff0c;子类在抽象类的基础上进行扩展、改造&#xff0c;但子类总体上会保留…

windows安装最新pip官方教程

在执行pip的pip install --upgrade pip更新时&#xff0c;出现如下错误&#xff0c;怎么也无法重新安装&#xff1a; 根据官网的安装教程来 命令的方式一&#xff1a; • 卸载PIP的命令&#xff1a;python -m pip uninstall pip • 重装PIP的命令&#xff1a;python -m ensure…