首页 > 编程知识 正文

python和java,python为什么叫爬虫

时间:2023-05-05 22:52:58 阅读:134375 作者:1778

前言

目的:根据本人的习惯和理解,用最简洁的表达方式介绍爬行动物的定义、组成部分、攀爬流程,并说明样例代码。

基础知识

爬虫定义:一种定向捕获互联网内容(大部分是网页)并进行自动化数据处理的程序。 主要用于收集松散的大量信息并进行结构化处理,为数据分析和挖掘提供原材料。

今天的TV是巨大的“爬行动物”。

爬行动物由URL库、收集器和解析器组成。

过程

如果要爬网的url库不为空,收集器会自动爬网相关内容并将结果传递给解析器。 在提取目标内容后,解析器将执行写入和检入文件等操作。

代码

第一步:写收集器

以下是比较简单的收集器函数。 需要requests库。

首先,构建包含浏览器和操作系统等信息的http头。 如果没有这个伪造的header,目标网站的WAF等防护设备可能会被识别为机器代码而被杀害。

然后,使用requests库的get方法获取url的内容。 如果http响应代码为200 ok,则页面访问正常,并且函数的返回值将被设置为文本格式的html代码的内容。

如果响应代码不是200 ok,则表示页面无法正常访问,并将函数返回值设置为特殊字符串或代码。

导入请求

defget_page(URL ) :

headers={ ' user-agent ' : ' Mozilla/5.0 (windows nt 6.1 ) appleWebKit/537.36 ) khtml,like Gecko ) chrome/75.0

response=requests.get(URL,headers=headers ) )。

if response.status _ code==200:

return response.text

else:

返回获取html error!'

第二步:解析器

解析器的作用是过滤和过滤收集器返回的html代码,并提取所需的内容。

作为14年的忠实用户,当然会在豆瓣上举出栗子_

我们计划攀登豆瓣排行榜TOP250电影的八个参数。 排名、电影url链接、电影名称、导演、上映年份、国家、电影类型和评分。 合并到词典中写入文本文件。

爬的页面如下,每页包括25部电影,共计10页。

在这里,必须表扬豆瓣的前台工程师们。 html标签的排版分层非常严密,非常方便信息提取。

以下是与“肖刀柄救济”对应的html代码。 ()应提取的8个参数用红线表示) )。

基于上面的html创建解析器函数,并提取8个字段。 函数的返回值是可重复的序列。

我个人喜欢用re (正则表达式)提取内容。 8个().*? )对应于需要提取的每个字段。

导入re

efparse_page(html ) :

pattern=re.compile (' (() ) ).*? ()、)、 *? () )? ()、)、

. *? () )? ) nbsp.*?

() )? () ).*? () ).*? )

. *? () )? (,re.S ) items=re.findall )、pattern和html ) )。

for item in items:

yield {

' rank': item[0],

' href': item[1],

' name': item[2],

' director ' : item [3].strip ([ 4: ],

' year': item[4].strip (),

' country': item[5].strip (),

' style': item[6].strip (),

' score': item[7].strip (

}

提取后的内容如下

整理成完整的代码:(不考虑容错)

导入请求

导入re

import json

defget_page(URL ) :

#收集器函数

headers={ ' user-agent ' : ' Mozilla/5.0 (windows nt 6.1 ) appleWebKit/537.36 ) khtml,like Gecko ) chrome/75.0

response=requests.get(URL,headers=headers ) )。

if response.status _ code==200:

return response.text

else:

返回获取html error!'

efparse_page(html ) :

#解析器函数

pattern=re.compile (' (() ) ).*? ()、)、

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。