#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)])#将主流的函数拿出来作为一个个参数,拿到线程池里面运行
多线程,可快啦!

天善智能网络爬虫学习~相关推荐

  1. 以下用于数据存储领域的python第三方库是-Python3爬虫学习之MySQL数据库存储爬取的信息详解...

    本文实例讲述了Python3爬虫学习之MySQL数据库存储爬取的信息.分享给大家供大家参考,具体如下: 数据库存储爬取的信息(MySQL) 爬取到的数据为了更好地进行分析利用,而之前将爬取得数据存放在 ...

  2. python爬虫正则表达式实例-python爬虫学习三:python正则表达式

    python爬虫学习三:python正则表达式 1.正则表达式基础 a.正则表达式的大致匹配过程: 1.依次拿出表达式和文本中的字符比较 2.如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符 ...

  3. 爬虫学习笔记(十)—— Scrapy框架(五):下载中间件、用户/IP代理池、settings文件

    一.下载中间件 下载中间件是一个用来hooks进Scrapy的request/response处理过程的框架. 它是一个轻量级的底层系统,用来全局修改scrapy的request和response. ...

  4. 爬虫学习笔记(七)——Scrapy框架(二):Scrapy shell、选择器

    一.Scrapy shell scrapy shell的作用是用于调试,在项目目录下输入scrapy shell start_urls (start_urls:目标url)得到下列信息: scrapy ...

  5. Python2爬虫学习系列教程

    http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...

  6. python爬虫自学路线_python 爬虫学习路线:从入门到进阶

    大家好,我是凉拌 今天给大家详解一下我的爬虫学习路线. 对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情.比如有的人则认为先要掌握网页的知识,遂开始 HTML\CSS,结果入了前端的坑,浪费了 ...

  7. Python爬虫学习系列教程

    大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫 ...

  8. python网络爬虫权威指南 豆瓣_豆瓣Python大牛写的爬虫学习路线图,分享给大家!...

    豆瓣Python大牛写的爬虫学习路线图,分享给大家! 今天给大家带来我的Python爬虫路线图,仅供大家参考! 第一步,学会自己安装python.库和你的编辑器并设置好它 我们学习python的最终目 ...

  9. 新手python爬虫代码_新手小白必看 Python爬虫学习路线全面指导

    爬虫是大家公认的入门Python最好方式,没有之一.虽然Python有很多应用的方向,但爬虫对于新手小白而言更友好,原理也更简单,几行代码就能实现基本的爬虫,零基础也能快速入门,让新手小白体会更大的成 ...

  10. Python爬虫学习系列教程-----------爬虫系列 你值的收藏

    静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...

最新文章

  1. 腾讯AI击败王者荣耀职业队,全靠自学、策略清奇,一天训练量为人类440年
  2. abaqus pythonreader_【技术邻】Abaqus里应用Python的一些技巧
  3. because the following virtual functions are pure within
  4. 客户端SDK测试思路
  5. 在数据库系统中遇见存储技术飞跃会怎样?
  6. oracle连接报08006,oracle数据库无法连接 The Network Adapter could not establish
  7. CMake下载及安装
  8. 【MVC 过滤器的应用】ASP.NET MVC 如何统计 Action 方法的执行时间
  9. lambda表达式和切片
  10. 梦断代码-读书笔记一
  11. linux自定义服务
  12. Filter过滤器实现登录权限拦截
  13. 桌面版linux装哪个版本好用,linux桌面版哪个版本好用?
  14. J - MaratonIME goes to the japanese restaurant (again)
  15. 对抗学习概念、基本思想、方法综述
  16. 碎片时间”绑架了多少焦虑的现代人?
  17. 区块链+珠宝供应链金融:除了解决信任问题,他们想让数字资产流动起来
  18. 2022年2月语音合成(TTS)和语音识别(ASR)论文月报
  19. MongoDB 分片迁移
  20. 浅谈智能计算机的未来发展,浅谈计算机人工智能科学技术应用及发展

热门文章

  1. PHP Yar - 学习/实践
  2. 三维建模,三维地理信息的作用
  3. 域名可以修改绑定的服务器么,域名备案绑定的服务器可以改么
  4. h5 字体加粗_div css布局对文字字体加粗样式设置
  5. Python 让多图排版更加美观
  6. LaTeX中的拼写及语法检查
  7. linux网卡命名规则及修改ip地址
  8. CSS卡贴悬停展开效果
  9. 缩减50%调试成本  小匠物联推可远程的串口调试助手
  10. centeros 卸载mysql_如何卸载数据库centeros