爬虫思路---原始版

爬虫scraper是一个批量搜集Web上信息的一个脚本。

或许最开始接触爬虫都是从‘批量下载’开始,最简单的爬虫就可以完成对一个网站一些信息的下载,当然学习之前最感兴趣的可能就是图片。

只要是重复动作,都可以自动化处理,自动化是学习计算机语言的最根本原因。

当然也包括重复性点击右键>另存为……

最简单的爬虫,比如一个可以下载网站图片的爬虫,下载内涵段子到本地txt文件的爬虫,搜集商品网站各种商品价格的爬虫(这三只爬虫都是同一个原理,是最基本的思路)等,所做的工作就是:

  1. 了解网页的结构,把需要的信息在网页上找出来;
  2. 把找出来的信息,从网络服务器上下载到本地;
  3. 对下载好的信息,也就是所谓收集到的数据,进行处理。

所有网页上呈现的信息都是按照一定标准来呈现的,也就是说网页上的信息都是有规律的—有一个固定的结构。爬虫就是找到所需信息在网页上存储的规律,然后机器就可以运行了。

抓取糗事百科段子的爬虫(终于是个能用了………);按照上面的思路,通过程序语言来实现。写程序之前,要先想好需要进行的步骤,程序语言很讲逻辑。可见算法的重要程序;学过基础语法,就不停的写案例吧。一直看书,很难看进去,越看效率越低,程序确实是一个实践性很强的工作。

写爬虫,先导入需要用到的库;

import requests
from bs4 import BeautifulSoup

requests 是下载网页数据的库,requests.get(url) 方法可以获取把网页的全部信息,然后在用BeautifulSoup 解析获取的信息,筛选出实际需要的。

先写完成一项工作所需要的工作,然后自动化。

构建获取段子的函数。

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36'
}
def get_joke(url):
    web_data = requests.get(url,headers = headers)
    soup = BeautifulSoup(web_data.text,'lxml')
    jokes = soup.select('div.content > span')
    for joke in jokes:
        temp = joke.get_text().strip()
        a = temp + '\n---------------------------------------hahahhahahah-------------------------------------------------------\n'
        file = open('C:\\Users\\Administrator\\Desktop\\test\\jokes.txt', 'a', encoding='utf-8')
        file.write(a)
        file.close()

注意:

  • 自动化抓取需要模拟浏览器的行为,否则服务器端会有相应限制,因此这里需要构建一个User-Agent,关于这些浏览器的参数,在Chrome浏览器里F12,里面有关于浏览网页中,所有的参数,解析网页也是通过Chrome解析。

  • BeautifulSoup 解析,通过css selector 通过对标签的属性进行选择,核心就是观察所需元素在网页里的位置,需要事先熟悉一下Html的结构,以及一些常见的标签。核心,就是找到要找的元素的唯一性,把它选出来。

  • 把找出来的数据从内存写入文件中,Windows的txt文件和Python 处理的编码不一样,因此encoding='utf-8' 一定要加上,不然写入文件时候会报错,而且写入的文件如果是中文,可能出现乱码。

写完获取一个网页的,然后就是对其他网页进行处理了,这里核心是,获取其他网页的url,还是那句话,具有相同布局结构的网页里元素的结构也是一样的,这些网页的url也是有规律的,根据这些规律写一个包含多个网页url的列表。然后在遍历这个列表就可以了。

url = ['https://www.qiushibaike.com/text/page/{}/'.format(x) for x in range(1,14)]

def get_more_jokes():
    for x in url:
        get_joke(x)
        print('----------this page has done...')

注意:

  • url列表用列表解析式写;

  • 在这个函数里会调用之前那个函数,因此之前那个函数写完,要先测试一下,确保正确。

最后,执行第二个函数就可以得到结构了。

get_more_jokes()

结果是看了一下午内涵段子……..

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,简单介绍下网络爬虫   网络爬虫是通过网页的链接地址来寻找网页,从网站某一个页面(设置为主页)开始,读取网页的内容,找到网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到这个网站所有的网页都抓取完为止。实际上,由于抓取技术的限制以及存储技术、处理技术的限制,要完全抓取网站的所有网页是不可能的,也是不实际的!本着从用户需要为出发点,实际需要抓取的网页往往是有限的,只需抓取符合用户要求的网页即可! 抓取网页的策略 在抓取网页的时候,网络爬虫一般有两种策略(即两种搜索方法),广度优先和深度优先。 广度优先:是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此页面中链接的所有页面。这是最常用的方式,广度优先的搜索策略可以并行处理,提高抓取速度。 深度优先:是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这种策略较易实现,但是抓取速度慢。 由于一般不可能抓取网站的所有链接,一般会设置访问层数,即搜索深度。起始页的深度为0,起始页中的链接url深度为1,依此类推。 构造C#语言的爬虫程序 C#已经封装了HTTP访问和多线程,这对编写网络爬虫提供了方便,而要C#网络爬虫程序需要解决以下问题: HTML分析:需要某种HTML解析器来分析爬虫程序遇到的每一个页面。 页面处理:需要处理每一个下载得到的页面。下载得到的内容需要保存起来,以便进一步分析处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值