【实习笔记】Python 学习 - 网络爬虫实现

一、网络爬虫简单介绍

1.网络爬虫基本结构


网页爬虫由 待抓取url 已下载数据 已抓取url 构成 ,其中种子 url 为事先挑选好的 url,其组成了初始的待抓取 url 队列

2.网络爬虫的工作流程

2.1.发起请求

  通过 HTTP 库向目标站点发起请求,即发送一个 Request,请求可以包含额外的 Headers 等信息,等待服务器响应。

2.2.获取响应内容

  如果服务器能正常响应,会得到一个 Response,Response 的内容便是所要获取的页面内容,类型可能有 HTML,JSON 字符串,二进制数据(如图片视频)等类型。

2.3.解析内容

  得到的内容可能是 HTML,可以用正则表达式、网页解析库进行解析。可能是 JSON,可以直接转为 JSON 对象解析,可能是二进制数据,可以做保存或者进一步的处理。

2.4.保存数据

  保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。

3.从爬虫的角度看待互联网网页的分类分别有几种?区分的标准是什么?

示例

  从爬虫的角度看,可分为已下载,待下载,可知网页和不可知网页。其中已下载网页中包括已经发生变化的动态网页(我们将其视为已过期,其余网页为未过期)。而保存在待爬取 url 队列中的是待下载网页。可知网页可以从待下载网页或待下载 url 分析得到,进行爬取。而不可知网页无法通过简单的分析获取,如腾讯新闻的评论等不显示源码的部分。

二、拿 Python 写的爬虫 demo

import json

import requests

from requests.exceptions import RequestException

import re

from bs4 import BeautifulSoup


def get_one_page(url):

    try:

        response = requests.get(url)

        if response.status_code == 200:

           return response.text

        return None

    except RequestException:

        return None


def parse_one_page(html):

    soup = BeautifulSoup(html, 'lxml')

    items = soup.select('span')

    for item in items:

        yield item.text


def write_to_file(content):

    with open('result.txt', 'a', encoding='utf-8') as f:

       f.write(json.dumps(content, ensure_ascii=False) + '\n')

       f.close()


def main():

    total = '土豆丝'

    url = 'https://www.sogou.com/sie?query=' + total

    html = get_one_page(url)

    parse_one_page(html)

    for item in parse_one_page(html):

       print(item.text)

       write_to_file(item.text)


if __name__ == '__main__':

main()

  编译器为 Python3.5.2,使用 requests 库进行网络访问,使用 beautifulsoup 处理爬取到的 html 静态文件,之后使用迭代器进行保存。

三、其他

1.怎样解决 JavaScript 渲染的问题?

分析 ajax 请求,可以获取 JavaScript 调取的图片等信息。

使用 Selenium/WebDriver 模拟浏览器动作,可以进行填写表单等操作。

使用 splash 进行 JavaScript 渲染,抓取信息。

使用 pyv8 调取 v8API 模拟 JavaScript 运行环境。

2.Robots 协议

  Robots 协议也被称作爬虫协议、机器人协议,它的全名叫做网络爬虫排除标准(Robots Exclusion Protocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取。它通常是一个叫做 robots.txt 的文本文件,放在网站的根目录下。

  当搜索爬虫访问一个站点时,它首先会检查下这个站点根目录下是否存在 robots.txt 文件,如果存在,搜索爬虫会根据其中定义的爬取范围来爬取。如果没有找到这个文件,那么搜索爬虫便会访问所有可直接访问的页面。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容