“受尽苦难而不厌,此乃修罗之路”

本文技术含量过低,请谨慎观看

之前用R语言的Rcurl包做过爬虫,给自己的第一感觉是比较费劲,看着看着发际线就愈加亮眼,最后果断丢之。不过好的是和python爬取原理基本一致,且听说python拥有大量网页解析库,结合MongoDB等存储数据库,爬虫效率大大调高,所以按捺不住心中之寂寞,故爬之。

在学习了几天基础知识后,今天就做了第一次python爬虫尝试,目标是大多数菜鸟入门必爬的猫眼电影Top榜单数据。可能大家爬得多了,猫眼的反爬机制在大伙的锤炼下渐渐成熟,我知道的一些方法比如使用代理、伪造headers或者是用selenium驱动浏览器都进不去。查了一些资料,目前只发现了使用登录网站后的cookies才能进去,只是这样猫眼会知道是你小子在爬它。

好的,下面进入正题:

1. 网页分析

Top100榜单,每一页显示10个,不同网页的规律是网址末尾offset = 0,10,20,30……90。查看源码发现每部电影都是在一个dd标签里。

介绍一个在线转cookies为python格式的工具:https://curl.trillworks.com/

2. 请求单页内容

import requestsfrom requests.exceptions import RequestException #异常处理import re #正则表达式import json #将字典转为字符串from multiprocessing import Pool #从multiprocessing引入进程池def get_one_page(url):try:        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'}        cookies = {……}#此处复制自己的cookies        response = requests.get(url,headers=headers,cookies=cookies)if response.status_code == 200:  #状态码为200表示请求成功return response.text #获取源码return Noneexcept RequestException:  #这里我们只定义了父类异常,你也可以再详细一点return None

3. 解析html

本例用正则表达式的方法:

def parse_one_page(html): #解析html代码    pattern = re.compile('.*?board-index.*?>(\d+).*?src="(.*?)".*?name">+'.*?>(.*?)(.*?)(.*?).*?integer">(.*?)'+'.*?fraction">(.*?).*?',re.S)    items = re.findall(pattern,html)#print(items)  #此时以列表形式存储,每个元素是一个元组for item in items: #变为好看的字典形式yield{ #变成一个生成器,并且理解为一个return'index': item[0],'image': item[1],'title': item[2],'actor': item[3].strip()[3:],#去掉换行符,且不要“主演:”'time': item[4].strip()[5:], #去掉换行符,且从第5个位置输出'score': item[5]+item[6] #评分是将两个部分拼接            }

4. 写入文件

def write_to_file(content):  #content是一个字典的形式with open("result.txt",'a',encoding= 'utf-8') as f: #'a'表示往后追加        f.write(json.dumps(content, ensure_ascii=False)+'\n') #json.dumps将其转为字符串的形式,字典的中括号也会成为字符串        f.close()

5. 主函数

def main(offset):    url = "http://maoyan.com/board/4?offset="+str(offset)    html = get_one_page(url) #获取源码#print(html) #打印源码for item in parse_one_page(html):#print(item) #输出10个字典        write_to_file(item) #写入文件

6. 开启循环及多线程

if __name__ == "__main__":  #这个__main__和上面定义的main函数没有关系    #for i in range(10):    #    main(i*10)    #map(main,[i*10 for i in range(10)]) #不理解为什么这句没有得到结果    pool = Pool()    pool.map(main, [i*10 for i in range(10)])

7. 总结

Top100电影数据

python将txt转为字符串_python做第一只小爬虫相关推荐

  1. python将txt转为字符串_Python玩转《生僻字》

    茕茕孑立 沆瀣一气 踽踽独行 醍醐灌顶 绵绵瓜瓞 奉为圭臬 龙行龘龘 犄角旮旯 娉婷袅娜 涕泗滂沱 呶呶不休 不稂不莠 这首<生僻字>,考验的是"语文"硬实力.倘若实力 ...

  2. python将txt转为字符串_Python 玩转生僻字

    茕茕孑立 沆瀣一气 踽踽独行 醍醐灌顶 绵绵瓜瓞 奉为圭臬 龙行龘龘 犄角旮旯 娉婷袅娜 涕泗滂沱 呶呶不休 不稂不莠 这首<生僻字>,考验的是"语文"硬实力.倘若实力 ...

  3. Python日记——柿子要捡软的捏,记第一只小爬虫

    2017.12.19 阅读了<零基础入门学习Python>一书第14章"论一只爬虫的自我修养"之后总想跃跃欲试实现一只自己的小爬虫,但可惜的是,或许因为这本书的读者太多 ...

  4. python按年月日输出字符串_python日期时间转为字符串或者格式化输出的实例

    python日期时间转为字符串或者格式化输出的实例 如下所示: 年月日时分秒 >>> print datetime.datetime.now().strftime("%Y- ...

  5. 自序-----《Python大战机器学习:数据科学家的第一个小目标》

    自序 <Python大战机器学习:数据科学家的第一个小目标>本书以快速上手.四分理论六分实践为出发点,讲述机器学习的算法和Python 编程实践,采用"原理笔记精华+ 算法Pyt ...

  6. 每周一本书之《Python大战机器学习:数据科学家的第一个小目标》

    数据科学家可谓是当下炙手可热的职业,机器学习则是他们的必备技能.机器学习在大数据分析中居于核心地位,在互联网.金融保险.制造业.零售业.医疗等产业领域发挥了越来越大的作用且日益受到关注. Python ...

  7. 如何用python做考勤_【python爬虫教程 考勤】如何用Python实现一只小爬虫,爬取拉勾网...

    python爬虫入门教程全集 千锋官网上有一些是零基础入门学习的很不错 如何用Python实现一只小爬虫,爬取拉勾网 1.首先打开拉,并搜索"java",显示出职位信息就是我们的目 ...

  8. 第一个python爬虫_Python爬虫01——第一个小爬虫

    Python小爬虫--贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...

  9. python自定义函数复制字符串_Python学习笔记摘要(一)类型 字符串 函数 列表 深浅拷贝...

    python中的对象和类型 在python中,认为系统中的每一个"东西"都是一个对象,在python中,"对象"有着特殊的意义,python中的对象有: 一个标 ...

最新文章

  1. CYQ.Data.ProjectTool 项目配置工具发布(包源码)
  2. 与女儿谈商业模式 (3):沃尔玛的成功模式
  3. Pytorch学习:Task4 PyTorch激活函数原理和使用
  4. html不同平台,基于H5端自定义平台怎么使用和H5端不一样的index.html?
  5. php 递归分销角色,PHP递归无限分类
  6. python3-开发进阶-RESTful 软件架构风格
  7. umask命令:设置文件的默认权限掩码
  8. linux 1号硬盘不能用,linux 挂载硬盘的疑问 : IDE1 上的接口无法使用.
  9. 安卓逆向系列教程 4.5 糖果星星达人
  10. 如何将Web项目的默认编译输出目录改为WebContent/WEB-INF/classe
  11. 转载 hashtable和dictionary的区别
  12. iOS网络请求架构图URL Loading System
  13. 网址导航引导页面H5源码
  14. 2019年六项扣除 个税计算器
  15. 简单五子棋(单机版-C)
  16. 单片机C语言流水灯花样编程,单片机C语言程序设计:花样流水灯
  17. 《Slice-to-volume medical image registration: A survey》论文阅读
  18. 密码的自动生成器:密码由大写字母/小写字母/数字组成,生成12位随机密码
  19. Android自定义控件---仿微信群聊(九宫格)头像
  20. bedtools2安装报错:fatal error: zlib.h

热门文章

  1. ad怎么批量改元器件封装_AD6.8的原理图中如何批量修改封装?
  2. Linux基础(管道符、重定向、转义字符与环境变量)
  3. 路由与交换技术(铺垫内容)
  4. 倒序查10条数据_10 | 怎么给字符串字段加索引?
  5. pb 怎么判断是 小数_考试90分以上的孩子是怎么学数学的?听听老师怎么说?
  6. Catch That Cow【广搜】
  7. 1096: 字符逆序
  8. Java并发-ThreadLocal
  9. 教你如何进入有密码的 XP 系统(下)
  10. Guava翻译系列之EventBus