天善智能网络爬虫学习~
#http://www.maoyan.com-榜单-top100,通过改变offset=10、20...这个参数实现翻页
#1、抓取单页内容:利用requests请求目标站点,得到单个网页HTML代码,返回结果
#2、正则表达式:根据HTML代码分析得到电影的名称、主演、上映时间、评分、图片链接等信息
#3、保存至文件:通过文件的形式结果保存,每一部电影一个结果一行Json字符串
#4、开启循环及多线程:对多页内容遍历,开启多线程提高抓取速度
import requests
import re
from requests.exceptions import RequestExceptiondef get_one_page(url):try:response = requests.get(url)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return None
def main():
url = 'http://maoyan.com/board/4?'
html = get_one_page(url)
print(html)
if __name__ == '__main__':
main()
打印出的结果:10部电影
<i class="board-index board-index-10">10</i> <a href="/films/1212" title="千与千寻" class="image-link" data-act="boarditem-click" data-val="{movieId:1212}"> <img src="//ms0.meituan.net/mywww/image/loading_2.e3d934bf.png" alt="" class="poster-default" /> <img data-src="http://p0.meituan.net/movie/9bf7d7b81001a9cf8adbac5a7cf7d766132425.jpg@160w_220h_1e_1c" alt="千与千寻" class="board-img" /> </a> <div class="board-item-main"> <div class="board-item-content"> <div class="movie-item-info"> <p class="name"><a href="/films/1212" title="千与千寻" data-act="boarditem-click" data-val="{movieId:1212}">千与千寻</a></p> <p class="star"> 主演:柊瑠美,入野自由,夏木真理 </p> <p class="releasetime">上映时间:2001-07-20(日本)</p> </div> <div class="movie-item-number score-num"> <p class="score"><i class="integer">9.</i><i class="fraction">3</i></p>
#<i class="board-index board-index-8">8</i>
# <img data-src="http://p0.meituan.net/movie/99/678407.jpg@160w_220h_1e_1c" alt="龙猫" class="board-img" />
#<p class="name"><a href="/films/123" title="龙猫" data-act="boarditem-click" data-val="{movieId:123}">龙猫</a></p>
# <p class="star">
#<p class="releasetime">上映时间:1988-04-16(日本)</p>
#<p class="score"><i class="integer">9.</i><i class="fraction">2</i></p>
#匹配排序8,匹配图片、标题、主演、时间、评分def parse_one_page(html):pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'+'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'+'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)#re.S表示匹配任意字符,若不加re.S则不能匹配换行符items = re.findall(pattern, html)print(items)
def main():url = 'http://maoyan.com/board/4?'html = get_one_page(url)parse_one_page(html)if __name__ == '__main__':main()
打印出来的结果:
def parse_one_page(html):pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'+'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'+'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)#re.S表示匹配任意字符,若不加re.S则不能匹配换行符items = re.findall(pattern, html)for item in items:yield {'index':item[0],'image':item[1],'title':item[2],'actor':item[3].strip()[3:],# '\n主演:张国荣,张丰毅,巩俐\n'用.strip()去掉换行符,用切片去掉主演:三个字'time':item[4].strip()[5:],'score':item[5]+item[6]}def main():url = 'http://maoyan.com/board/4?'html = get_one_page(url)for item in parse_one_page(html):print(item)
def write_to_file(content):with open('result.txt', 'a') as f:f.write(json.dumps(content) + '\n')#字典转换成字符串f.close()def main():url = 'http://maoyan.com/board/4?'html = get_one_page(url)for item in parse_one_page(html):print(item)write_to_file(item)
路径在这: /Users/****/Documents/wangyiyun/result.txt 但都是unicode编码了,
def write_to_file(content):with open('result.txt', 'a',encoding = 'utf-8') as f:f.write(json.dumps(content,ensure_ascii = False) + '\n')#字典转换成字符串f.close()
这样就好了
if __name__ == '__main__':for i in range(10):main(i * 10)#构造offset=0,10,20...90pool = Pool()#构建进程池pool.map(main,[i * 10 for i in range(10)])#将主流的函数拿出来作为一个个参数,拿到线程池里面运行
多线程,可快啦!
天善智能网络爬虫学习~相关推荐
- 以下用于数据存储领域的python第三方库是-Python3爬虫学习之MySQL数据库存储爬取的信息详解...
本文实例讲述了Python3爬虫学习之MySQL数据库存储爬取的信息.分享给大家供大家参考,具体如下: 数据库存储爬取的信息(MySQL) 爬取到的数据为了更好地进行分析利用,而之前将爬取得数据存放在 ...
- python爬虫正则表达式实例-python爬虫学习三:python正则表达式
python爬虫学习三:python正则表达式 1.正则表达式基础 a.正则表达式的大致匹配过程: 1.依次拿出表达式和文本中的字符比较 2.如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符 ...
- 爬虫学习笔记(十)—— Scrapy框架(五):下载中间件、用户/IP代理池、settings文件
一.下载中间件 下载中间件是一个用来hooks进Scrapy的request/response处理过程的框架. 它是一个轻量级的底层系统,用来全局修改scrapy的request和response. ...
- 爬虫学习笔记(七)——Scrapy框架(二):Scrapy shell、选择器
一.Scrapy shell scrapy shell的作用是用于调试,在项目目录下输入scrapy shell start_urls (start_urls:目标url)得到下列信息: scrapy ...
- Python2爬虫学习系列教程
http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...
- python爬虫自学路线_python 爬虫学习路线:从入门到进阶
大家好,我是凉拌 今天给大家详解一下我的爬虫学习路线. 对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情.比如有的人则认为先要掌握网页的知识,遂开始 HTML\CSS,结果入了前端的坑,浪费了 ...
- Python爬虫学习系列教程
大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫 ...
- python网络爬虫权威指南 豆瓣_豆瓣Python大牛写的爬虫学习路线图,分享给大家!...
豆瓣Python大牛写的爬虫学习路线图,分享给大家! 今天给大家带来我的Python爬虫路线图,仅供大家参考! 第一步,学会自己安装python.库和你的编辑器并设置好它 我们学习python的最终目 ...
- 新手python爬虫代码_新手小白必看 Python爬虫学习路线全面指导
爬虫是大家公认的入门Python最好方式,没有之一.虽然Python有很多应用的方向,但爬虫对于新手小白而言更友好,原理也更简单,几行代码就能实现基本的爬虫,零基础也能快速入门,让新手小白体会更大的成 ...
- Python爬虫学习系列教程-----------爬虫系列 你值的收藏
静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...
最新文章
- 腾讯AI击败王者荣耀职业队,全靠自学、策略清奇,一天训练量为人类440年
- abaqus pythonreader_【技术邻】Abaqus里应用Python的一些技巧
- because the following virtual functions are pure within
- 客户端SDK测试思路
- 在数据库系统中遇见存储技术飞跃会怎样?
- oracle连接报08006,oracle数据库无法连接 The Network Adapter could not establish
- CMake下载及安装
- 【MVC 过滤器的应用】ASP.NET MVC 如何统计 Action 方法的执行时间
- lambda表达式和切片
- 梦断代码-读书笔记一
- linux自定义服务
- Filter过滤器实现登录权限拦截
- 桌面版linux装哪个版本好用,linux桌面版哪个版本好用?
- J - MaratonIME goes to the japanese restaurant (again)
- 对抗学习概念、基本思想、方法综述
- 碎片时间”绑架了多少焦虑的现代人?
- 区块链+珠宝供应链金融:除了解决信任问题,他们想让数字资产流动起来
- 2022年2月语音合成(TTS)和语音识别(ASR)论文月报
- MongoDB 分片迁移
- 浅谈智能计算机的未来发展,浅谈计算机人工智能科学技术应用及发展