python将txt转为字符串_python做第一只小爬虫
“受尽苦难而不厌,此乃修罗之路”
本文技术含量过低,请谨慎观看
之前用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做第一只小爬虫相关推荐
- python将txt转为字符串_Python玩转《生僻字》
茕茕孑立 沆瀣一气 踽踽独行 醍醐灌顶 绵绵瓜瓞 奉为圭臬 龙行龘龘 犄角旮旯 娉婷袅娜 涕泗滂沱 呶呶不休 不稂不莠 这首<生僻字>,考验的是"语文"硬实力.倘若实力 ...
- python将txt转为字符串_Python 玩转生僻字
茕茕孑立 沆瀣一气 踽踽独行 醍醐灌顶 绵绵瓜瓞 奉为圭臬 龙行龘龘 犄角旮旯 娉婷袅娜 涕泗滂沱 呶呶不休 不稂不莠 这首<生僻字>,考验的是"语文"硬实力.倘若实力 ...
- Python日记——柿子要捡软的捏,记第一只小爬虫
2017.12.19 阅读了<零基础入门学习Python>一书第14章"论一只爬虫的自我修养"之后总想跃跃欲试实现一只自己的小爬虫,但可惜的是,或许因为这本书的读者太多 ...
- python按年月日输出字符串_python日期时间转为字符串或者格式化输出的实例
python日期时间转为字符串或者格式化输出的实例 如下所示: 年月日时分秒 >>> print datetime.datetime.now().strftime("%Y- ...
- 自序-----《Python大战机器学习:数据科学家的第一个小目标》
自序 <Python大战机器学习:数据科学家的第一个小目标>本书以快速上手.四分理论六分实践为出发点,讲述机器学习的算法和Python 编程实践,采用"原理笔记精华+ 算法Pyt ...
- 每周一本书之《Python大战机器学习:数据科学家的第一个小目标》
数据科学家可谓是当下炙手可热的职业,机器学习则是他们的必备技能.机器学习在大数据分析中居于核心地位,在互联网.金融保险.制造业.零售业.医疗等产业领域发挥了越来越大的作用且日益受到关注. Python ...
- 如何用python做考勤_【python爬虫教程 考勤】如何用Python实现一只小爬虫,爬取拉勾网...
python爬虫入门教程全集 千锋官网上有一些是零基础入门学习的很不错 如何用Python实现一只小爬虫,爬取拉勾网 1.首先打开拉,并搜索"java",显示出职位信息就是我们的目 ...
- 第一个python爬虫_Python爬虫01——第一个小爬虫
Python小爬虫--贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...
- python自定义函数复制字符串_Python学习笔记摘要(一)类型 字符串 函数 列表 深浅拷贝...
python中的对象和类型 在python中,认为系统中的每一个"东西"都是一个对象,在python中,"对象"有着特殊的意义,python中的对象有: 一个标 ...
最新文章
- CYQ.Data.ProjectTool 项目配置工具发布(包源码)
- 与女儿谈商业模式 (3):沃尔玛的成功模式
- Pytorch学习:Task4 PyTorch激活函数原理和使用
- html不同平台,基于H5端自定义平台怎么使用和H5端不一样的index.html?
- php 递归分销角色,PHP递归无限分类
- python3-开发进阶-RESTful 软件架构风格
- umask命令:设置文件的默认权限掩码
- linux 1号硬盘不能用,linux 挂载硬盘的疑问 : IDE1 上的接口无法使用.
- 安卓逆向系列教程 4.5 糖果星星达人
- 如何将Web项目的默认编译输出目录改为WebContent/WEB-INF/classe
- 转载 hashtable和dictionary的区别
- iOS网络请求架构图URL Loading System
- 网址导航引导页面H5源码
- 2019年六项扣除 个税计算器
- 简单五子棋(单机版-C)
- 单片机C语言流水灯花样编程,单片机C语言程序设计:花样流水灯
- 《Slice-to-volume medical image registration: A survey》论文阅读
- 密码的自动生成器:密码由大写字母/小写字母/数字组成,生成12位随机密码
- Android自定义控件---仿微信群聊(九宫格)头像
- bedtools2安装报错:fatal error: zlib.h