欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python爬虫笔记——爬虫入门

程序员文章站 2022-05-18 21:25:29
...

一、爬虫

  1. 爬虫是什么
    我们把互联网有价值的信息都比喻成大的蜘蛛网,而各个接地那就是存放的数据,而蜘蛛网上的蜘蛛比喻成爬虫,而爬虫是可以自动抓取互联网信息的程序,从互联网上抓取一切有价值的信息,并把站点的html和js返回的图片爬到本地,并存出起来。

  2. 爬虫用途
    爬取网站信息数据,12306抢票,网络投票等。

二、BeautifulSoup使用

BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.BeautifulSoup会帮你节省数小时甚至数天的工作时间.
看了一些BeautifulSoup的教程文档,还是推荐大家可以看看 BeautifulSoup中文官方文档 ,官方文档还是很好用的。
主要还是分析html的网页格式,找到想爬取内容在html对应的位置,使用beautifulsoup找到对应元素,获取标签内容。

三、爬取豆瓣电影TOP250

  1. 分析网页数据构成,获取元素位置。如图,我们可以查看元素在HTML里面对应标签位置,使用beautifulsoup库来进行解析获取想要的数据。
    Python爬虫笔记——爬虫入门

  2. 直接上代码

    import requests
    from bs4 import BeautifulSoup
    import re
    import json
    
    #模拟浏览器访问
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'}
    #爬取数据结果集
    result =[]
    
    # 获取电影详情页链接
    def get_deatil_url(url):
        req = requests.get(url, headers=headers)
        bs = BeautifulSoup(req.text, 'html.parser')
        urls = bs.find_all("div", attrs={"class":"info"})
        if len(urls) > 0:
            for item in urls:
                link = item.find("a").get('href')
                get_details(link)
    
    
    # 获取页面详情
    def get_details(url):
        req = requests.get(url, headers=headers)
        bs = BeautifulSoup(req.text, 'html.parser')
        try:
            # 电影排名(这样写要确定标签的属性或者class值是唯一的能定位到)
            rank = bs.find("span", attrs={"class": "top250-no"}).get_text()
            # 电影名称
            name = bs.find("span", attrs={"property": "v:itemreviewed"}).get_text().split(' ')[0]
            # 评分
            score = bs.find("strong", attrs={"class":"ll rating_num"}).get_text()
            data = {
                'rank' : rank,
                'name': name,
                'score': score
            }
            print(data)
            result.append(data)
        except Exception as e:
            print(e)
    
    
    ## 3.获取的数据保存到json文件中
    def save_json(result):
        with open('movie.json','w',encoding='utf-8') as file:
            file.write(json.dumps(result,indent=2,ensure_ascii=False))
            
    
    if __name__ == '__main__':
        ##  1.#根据列表url可以看出start后面为当前页面第一条的起始序号
        for i in range(0,10):
            url = 'https://movie.douban.com/top250?start={}&filter='.format(i * 25)
            ##  2.通过url获取页面详情
            get_deatil_url(url)
        ## 3.将爬取的数据集保存到json文件中。
        save_json(result)
      
    
  3. 运行爬虫结果
    运行生成的json文件跟python文件会在同一目录下面。Python爬虫笔记——爬虫入门

四、总结

以上算是python爬虫的简单例子,很多入门python爬虫的都有拿豆瓣top250列表做为练手对象,如果对python有兴趣可以试试。