飞道的博客

爬虫入门经典(九) | 简单一文教你如何爬取扇贝单词

364人阅读  评论(0)

  大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行更新,博客主页:https://buwenbuhuo.blog.csdn.net/

PS:由于现在越来越多的人未经本人同意直接爬取博主本人文章,博主在此特别声明:未经本人允许,禁止转载!!!



推荐


  ♥各位如果想要交流的话,可以加下QQ交流群:974178910,里面有各种你想要的学习资料。♥

  ♥欢迎大家关注公众号【不温卜火】,关注公众号即可以提前阅读又可以获取各种干货哦,同时公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍1份哟~♥

现在的博主正在发呆,无意之中打开了扇贝Python必背词汇的网址。那么既然打开了,再加上博主挺无聊的。那么就尝试爬取一下这个网页!


扇贝Python必背词汇网址:https://www.shanbay.com/wordlist/110521/232414/

一、网页分析

我们打开此网站之后,通过以往爬取网页的经验,会发现此网页特别容易爬取。

大概查看了网页,我们只需爬取单词和含义即可。首先我们先来查看网页源码

下面分别把他们解析出来:


🆗,分析完毕后,我们就可以通过代码进行实现了。

    etree_obj = etree.HTML(html)
    word_list = etree_obj.xpath('//strong/text()')
    explain_list = etree_obj.xpath('//td[@class="span10"]/text()')
    item_zip = zip(word_list,explain_list)
    for item in item_zip:
        items.append(item)

分析完内容,下面就开始分析分页。鉴于此URL只有三页URL,因此,博主就使用最简单的方式,把Url拼接出来

base_url = "https://www.shanbay.com/wordlist/110521/232414/?page={}"

for i in range(1, 4):
    url = base_url.format(i)
    print(url)


二、代码实现

# encoding: utf-8
'''
  @author 李华鑫
  @create 2020-10-08 8:10
  Mycsdn:https://buwenbuhuo.blog.csdn.net/
  @contact: 459804692@qq.com
  @software: Pycharm
  @file: 作业:爬扇贝Python必背词汇.py
  @Version:1.0
  
'''
import csv
import requests
from lxml import etree

"""
https://www.shanbay.com/wordlist/110521/232414/?page=1
https://www.shanbay.com/wordlist/110521/232414/?page=2
https://www.shanbay.com/wordlist/110521/232414/?page=3

//strong                         # en
//td[@class="span10"]            # cn
"""
base_url = "https://www.shanbay.com/wordlist/110521/232414/?page={}"

headers={
   
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
}

items =[]

def parse_url(url):
    """解析url,得到响应内容"""
    response = requests.get(url=url,headers=headers)
    return response.content.decode("utf-8")

def parse_html(html):
    """使用xpath解析html"""
    etree_obj = etree.HTML(html)
    word_list = etree_obj.xpath('//strong/text()')
    explain_list = etree_obj.xpath('//td[@class="span10"]/text()')
    item_zip = zip(word_list,explain_list)
    for item in item_zip:
        items.append(item)

def save():
    """将数据保存到csv中"""
    with open("./shanbei.csv", "a", encoding="utf-8") as file:
       writer = csv.writer(file)
       for item in items:
            writer.writerow(item)

def start():
    """开始爬虫"""
    for i in range(1, 4):
        url = base_url.format(i)
        html = parse_url(url)
        parse_html(html)
    save()

if __name__ == '__main__':
    start()

三、运行结果


美好的日子总是短暂的,虽然还想继续与大家畅谈,但是本篇博文到此已经结束了,如果还嫌不够过瘾,不用担心,我们下篇见!


  好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
  如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
  码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!



转载:https://blog.csdn.net/qq_16146103/article/details/109270779
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场