爬虫入门基础项目

在入手这个爬虫项目之前,基础知识的储备包括:

Python基础知识
网页信息呈现方式(HTML/JSON)
数据获得方式(POST/GET)
Requests,唯一的一个非转基因的Python HTTP库
获取我们需要的内容(正则表达式/Beautiful Soup 4.4.0文档

精通正则表达式(第三版)【美】弗瑞德》是本好书,第三章开始就有点傻眼了,还需要在未来写正则表达式时反复翻阅。
上述标粗内容是我在写爬虫过程中需要反复学习与查阅的内容。

项目开始

对于我这一个弱渣小白来说,实际上是边抄边思考并且进行总结与重现的一个过程。

豆瓣电影TOP250

参考网站

有样学样豆瓣影片TOP250

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""豆瓣电影TOP250"""

"""
注意:
打开Chrome的开发者工具(https://developers.google.cn/web/tools/chrome-devtools/),来观察网页结构
在Windows和Linux,对应的快捷键是"F12"
"""


import codecs #更方便处理中文编码的编码解码器,在添加之前,控制台返回内容不是中文,是编码
import requests
from bs4 import BeautifulSoup


DOWNLOAD_URL = 'https://movie.douban.com/top250'


def download_page(url):
    
    """下载网页源码"""

    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
    }
    # 服务器通过校验请求的U-A来识别爬虫,这算是最简单的一种反爬虫机制了
    # 通过模拟浏览器的U-A,能够很轻松地绕过这个问题
    # 不加header,返回b''
    data = requests.get(url,headers=headers).content
    #获取某个网页.全部内容
    return data


def parse_html(html):

    """解析网页示例,获得电影名"""
    
    soup = BeautifulSoup(html , features="lxml")
    # 如果不写,就是No parser was explicitly specified
    movie_list_soup = soup.find('ol' , attrs = {'class': 'grid_view'})

    movie_name_list = []
    
    for movie_li in movie_list_soup.find_all('li'):
        detail = movie_li.find('div' , attrs = {'class' : 'hd'})
        movie_name = detail.find('span' , attrs = {'class' : 'title'}).getText()
        
        movie_name_list.append(movie_name)

    """让它找到页码导航中的下一页的链接"""
    next_page = soup.find('span' , attrs = {'class' : 'next'}).find('a')
    if next_page:
        return movie_name_list, DOWNLOAD_URL + next_page['href']
    return movie_name_list, None


def main():

    #"""将获取到的内容全部打印出来"""
    """程序拼装,并将结果输出到一个文件中"""

    url = DOWNLOAD_URL
    with codecs.open('D:/practice/python_codes/Web_Scraping_with_Python/movies.txt','wb',encoding= 'utf-8') as fp:
        while url:
            html = download_page(url)
            movies, url = parse_html(html)
            fp.write(u'{movies}\n'.format(movies = '\n'.join(movies)))

    #print (download_page(DOWNLOAD_URL))


if __name__ == '__main__':

    """主函数"""

    main()

下一步,将基于此开展中文影视知识图谱构建研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值