爬虫python 静态界面爬虫python

一、简单爬虫框架

简单爬虫框架由四个部分组成:URL管理器、网页下载器、网页解析器、调度器,还有应用这一部分,应用主要是NLP配合相关业务。

它的基本逻辑是这样的:给定一个要访问的URL,获取这个html及内容(也可以获取head和cookie等其它信息),获取html中的某一类链接,如a标签的href属性。从这些链接中继续访问相应的html页面,然后获取这些html的固定标签的内容,并把这些内容保存下来。

一些前提:;所有要爬取的页面,它们的标签格式都是相同的,可以写一个网页解析器去获取相应的内容;给定的URL(要访问的资源)所获得的html,它包含的标签链接是可以筛选的,筛选后的标签链接(新的URL)会被继续请求其html文档。调度器是一个循环体,循环处理这些URL、请求以及html、网页解析。

1.运行流程

爬虫python 静态界面爬虫python_python

调度器是一个主循环体,负责不断重复执行URL管理器、下载器、解析器。URL是管理新的URL的添加、旧的URL的去除,以及URL的去重和记录。下载器顾名思义,就是根据URL,发送http请求,获取utf-8编码的字节流的html文件数据。解析器负责将html还原成DOM对象,并提供一套类似js的DOM操作的方法,从html中获取节点、属性、文本、甚至是样式等内容。

2.URL管理器

URL管理器有两个功能,获取待添加的URL–判断它是否在已被读取的URL集合里–[No]判断它是否在待读取的URL集合里–[No]添加到待读取的URL集合里。否则就直接抛弃。

URL管理器一般放在内存、关系型数据库和缓存数据库里。python里可以使用set()集合去重。

3.网页下载器

向给定的URL发送请求,获取html。python的两个模块。内置urllib模块和第三方模块request。python3将urllib2封装成了urllib.request模块。

1 # 网页下载器代码示例
 2 import urllib
 3 
 4 url = "http://www.baidu.com"
 5 
 6 print("第一种方法: 直接访问url")
 7 response1 = urllib.request.urlopen(url)
 8 print(response1.getcode())  # 状态码
 9 print(len(response1.read()))  # read读取utf-8编码的字节流数据
10 
11 print("第二种方法: 设置请求头,访问Url")
12 request = urllib.request.Request(url)  # 请求地址
13 request.add_header("user-agent", "mozilla/5.0")  # 修改请求头
14 response2 = urllib.request.urlopen(request)
15 print(response2.getcode())
16 print(len(response2.read()))
17 
18 import http.cookiejar  # 不知道这是啥
19 
20 print("第三种方法: 设置coockie,返回的cookie")
21 # 第三种方法的目的是为了获取浏览器的cookie内容
22 cj = http.cookiejar.CookieJar()
23 opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
24 urllib.request.install_opener(opener)
25 response3 = urllib.request.urlopen(url)
26 print(response3.getcode())
27 print(len(response3.read()))
28 print(cj)  # 查看cookie的内容

4.网页解析器

将utf-8编码的字节码重新重新解析为html。因为数据传输是字节数据,所以网页下载器下载的内容需要重新解析。

提供DOM对象[html文档解构]的操作方法。和js类似。包括节点、标签元素、属性[包括name、class、style、value等等]、样式、内容等的操作。从而能够获取特定的内容。

python的BeautifulSoup模块(bs4)。以下代码可直接在bs4模块官方文档中获取和运行。

1 from bs4 import BeautifulSoup
 2 from re import compile
 3 html_doc = """
 4 <html><head><title>The Dormouse's story</title></head>
 5 <body>
 6 <p class="title"><b>The Dormouse's story</b></p>
 7 
 8 <p class="story">Once upon a time there were three little sisters; and their names were
 9 <a href="http:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值