整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

python 爬虫系列(二)想要爬取站点?这几件事情

python 爬虫系列(二)想要爬取站点?这几件事情很重要

、前言:

  • 刚开始写爬虫程序,如果爬取的站点规模比较小,此时往往我们不需要关注站点的规模,因为此时对我们的效率影响来说,多点少点都没关系,假设只有几百个页面,多点少点也就那么点时间。

  • 但是,假如你爬取的站点规模相当大,数量达到了百万级的,此时如果你还是每次都全部爬取,这时候效率就是不可接受的了。

  • 百万级的站点,并行抓取都很久,串行抓取估计你可以开启爬虫后先去休假两三个月再回来了。

  • 所以,在抓取站点之前,我们根据实际情况来获取一些站点的规模信息是非常有必要的。

二、获取站点的规模

  • 获取一个站点的规模信息,其实我们可以利用百度或者google爬虫的成果。

  • 如何利用呢?

  • 其实我们可以在站点前加site:www.xxxx.com来判断www.xxxx.com这个站点的规模是多大。

  • 其会返回所收录的页面数,当然这个数量不是百分百的,但其基本上是能够反应我们所需抓取的站点的规模的。

三、识别站点的技术

  • 说完站点的规模,其实站点所使用的技术也会对我们的抓取过程有所影响。

  • 比如:仅使用javascript、html、css构建的站点,抓取其内容是相对简单的。如果是使用AngularJS、ReactJs等构建该网站,此时的网站内容就很可能是动态加载的。更老点的站点,其使用了ASP,那么在爬取页面时就必须要用到会话管理和表单提交了等操作手段了。

builtwith模块的使用

  • 我们可以使用builtwith模块来检查站点构建的技术类型

  • 使用操作是相当简单的。

  • 1、安装builtwith:

  • python2输入:pip install builtwith

  • python3输入:pip3 install builtwith

  • 安装好之后,使用起来也是很简单的哦:

  • 直接调用builtwith.parse(url)即可解析指定站点

  • 示例:

  • 我们解析下自己的站点:

import builtwith

print(builtwith.parse(‘http://www.cherylgood.cn’));

  • 结果:

{‘programming-languages’: [‘Java’], ‘miscellaneous’: [‘Gravatar’], ‘javascript-frameworks’: [‘jQuery’]}

  • 可以看到,我们的站点技术相对简单,开发语言为java,还使用了jQuery

  • 我们再看看头条

  • 示例代码

import builtwith

print(builtwith.parse(‘http://www.toutiao.com’));

  • 结果:

{‘web-servers’: [‘Tengine’], ‘web-frameworks’: [‘Django’], ‘programming-languages’: [‘Python’], ‘javascript-frameworks’: [‘Prototype’]}

  • 可以看到,我们连他用了什么服务器都可以知道,开发语言是python,框架为Django

  • 这些对于我们决定采用什么抓取策略都是很有帮助的。

四、所有者、python-whois模块的使用

  • 除此之外,我们还可以知道抓取的站点的所有者是谁哦。

  • 一般情况下,知不知道肯定关系不大,但是假如我们知道某个大牛,其反爬虫技术特别牛,此时我们抓取其站点时是不是应该要收敛点,速度放慢点呢?当然,己所不欲勿施于人,在爬取一般站点时,还是建议大家的抓取速度尽量不要太块。

  • 我们可以通过使用python-whois来获取所有者信息。

  • 操作也很简单:

  • 1、安装python-whois:

  • python2输入:pip install python-whois

  • python3输入:pip3 install python-whois

  • 示例代码:

import whois

print(whois.whois(‘http://www.toutiao.com’))

  • 结果如下(只截取部分):

  • 可以看到,其城市在福建厦门。

  • OK,本次我们主要学习了如果获取站点的规模,构建技术,所有者等信息。

  • 希望对你有帮助,谢谢,不喜欢不要打我,因为我还不是老司机……(^V^)。

1、网站地图要包含网站最重要的一些页面,包括产品分类页面、主要产品页面、访问量比较大的页面等等;

2、网站地图布局一定要简洁,所有的链接都是标准的HTML文本,并且要尽可能多的包含关键字;

3、尽量在站点地图上增加文本说明;

4、站点的每个页面里面都需要放置网站地图的链接;

5、确保网站地图里的每一个链接都是正确、有效的。


二、HTML网站地图的制作

网站地图两种表现形式,第一种是后缀名为.html的网站地图,一般命名使用sitemap。HTML版本的网站地图针对的目标是用户,也就是用户在网站上可以看到的网站地图,一般情况下在网站每个页面的顶部或者底部添加一个网站地图的锚文本链接,用户点击之后看到的内容主要是网站主要栏目和页面的链接。

对于小网站来说,网站地图可以列出整个网站所有页面的链接,如果是大中型网站,内容页面较多的话,建议列出网站的主要目录和部分重要页面的链接。

HTML版本的网站地图建议人工手动编辑,也可以使用Dreamweaver来完成。

三、XML网站地图的制作

网站地图的第二种形式是XML版本的网站地图,一般命名为Sitemap.xml(首字母S通常大写),简单来讲,Sitemap.xml 放置的是网站上链接的列表。它由XML标签组成,文件本身必须是utf8编码。制作Sitemap.xml,并提交给搜索引擎可以使网站的内容完全被收录,包括那些隐藏比较深的页面。这是一种网站与搜索引擎对话的好方式。

标准的XML网站地图格式为:

<?xml version="1.0" encoding="UTF-8"?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

<url>

<loc>http://www.*****.com/</loc>

<priority>1.00</priority>

<lastmod>2017-07-24</lastmod>

<changefreq>Always</changefreq>

</url>

</urlset>

其中:

urlset标签是必须存在的,用于声明文件所使用的Sitemap协议版本;

url标签也是必须存在的,它是下面所有网址的目标签;

loc标签也是必须存在的,列出页面完整的URL;

priority标签是可选标签,表示URL的重要程序,数值范围从0.1到1.0不等,1.0代表此页面最为重要,0.0

代表最不重要。站长可以使用priority标签告诉搜索引擎这个网页的重要程度。

lastmod标签是可选标签,表示页面最后更新时间;

changefreq标签是可选标签,代表文件的更新频率,其中的值包括:

Always,一直变动;

Hourly,每小时;

Daily,每天;

Weekly,每周;

Monthly,每月;

Yearly,每年;

Never,从未变动。

XML网站地图生成工具有很多,大家可以多测试几个,哪个顺手就用哪个,我们这里使用爱站工具包进行生成,看操作:

第一步,我们下载爱站seo工具包并安装;


第二步,打开软件登录之后选择“网站地图/Sitemap”;


第三步,点击红框被的按钮添加一个站点,添加完成之后点击右侧的网站图标;


第四步,设置网站地图的抓取类型和生成的格式,设置好之后点击右下角的“抓爬”按钮。


第五步,待程序抓爬完成之后,点击右下角的“生成XML文件”,生成完成之后,在程序的提示下找到地图文件。


四、网站地图的提交

我们要将制作好的网站地图提交给搜索引擎,HTML版本的网站地图针对是网站用户,我们只需要在网站页面的顶部或者底部添加锚文本链接即可;XML格式的网站地图主要便于搜索引擎的抓取,所以我们需要将XML格式的网站地图提交给搜索引擎,一般情况下我们使用一下两种办法,甚至我们两种都会使用,它们之间是不冲突的。

1、一般的搜索引擎都会有自己的站长平台,我们需要登录站长平台验证网址之后,将自己的网站地图提交给搜索引擎,以百度站长平台为例。

2、第二种办法,将网站地图在robots.txt中进行声明,告诉搜索引擎网站地图的位置。使用方法如下:

Sitemap:http://www.*****.com/sitemap.xml

所有的主流搜索引擎都支持使用robots.txt文件声明网站地图的位置。

HTML文档中的任何地方可包括JavaScript代码。但也有以下的最佳方法来包含JavaScript在HTML文件。

在 <head>...</head> 部分。

在 <body>...</body> 部分。

在<body>...</body> 和<head>...</head> 部分。

脚本和外部文件,然后包括在<head>... </ head>部分。

在下面的章节中,我们将看到如何可以包含JavaScript方式的不同:

在JavaScript的<head>... </ head>部分:

如果你想在一些事件上运行一个脚本,当用户点击某个地方,如,那么应该脚本的头部,如下所示:

<html>
<head>
<script type="text/javascript">
<!--
function sayHello() {
   alert("Hello World")
}
//-->
</script>
</head>
<body>
<input type="button" onclick="sayHello()" value="Say Hello" />
</body>
</html>
123456789101112131415复制代码类型:[javascript]

这将产生以下结果:

JavaScript在<body>... </ body>部分:

如果需要一个脚本的页面加载,以便脚本生成页面内容来运行,该脚本在文档的<body>部分。在这种情况下,就不必使用JavaScript定义的所有功能:

<html>
<head>
</head>
<body>
<script type="text/javascript">
<!--
document.write("Hello World")
//-->
</script>
<p>This is web page body </p>
</body>
</html>
12345678910111213复制代码类型:[javascript]

JavaScript 在<body> 和 <head> 部分:

你可以把JavaScript代码在<head>和<body>部分完全如下:

<html>
<head>
<script type="text/javascript">
<!--
function sayHello() {
   alert("Hello World")
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
document.write("Hello World")
//-->
</script>
<input type="button" onclick="sayHello()" value="Say Hello" />
</body>
</html>12345678910111213141516171819复制代码类型:[javascript]

在JavaScript外部文件:

当开始工作,更广泛地使用JavaScript,可能会发现有情况下,在站点的多个页面重用相同的JavaScript代码。

你并不局限于将保持在多个HTML文件相同的代码。 script标签提供了一种机制,允许存储JavaScript在外部文件中,然后将其包含到HTML文件。

下面是一个例子来说明如何使用脚本标记和src属性包含在HTML代码的外部JavaScript文件:

<html>
<head>
<script type="text/javascript" src="filename.js" ></script>
</head>
<body>
.......
</body>
</html>

12345678910复制代码类型:[javascript]

使用JavaScript从外部文件源,则需要使用扩展写下所有的JavaScript代码在一个简单的文本文件“.js”,然后包括文件,如上图所示。

例如,你可以保持在以下文件filename.js的内容,然后包括filename.js文件后,在HTML文件中使用sayHellofunction:

function sayHello() {
   alert("Hello World")
}

开课吧广场-人才学习交流平台