zoukankan      html  css  js  c++  java
  • (python3爬虫实战-第一篇)利用requests+正则抓取猫眼电影热映口碑榜

    
    
    今天是个值得纪念了日子,我终于在博客园上发表自己的第一篇博文了。作为一名刚刚开始学习python网络爬虫的爱好者,后期本人会定期发布自己学习过程中的经验与心得,
    希望各位技术大佬批评指正。以下是我自己做的一个小爬虫,用到了爬虫的基本知识requests库+正则表达式库,最后将爬取到的结果存入日志result.txt,推荐给刚刚开始学习的小白们,
    学不可以已,积土成山,风雨兴焉,希望我们共同进步!
    开启模式
    1
    #author: "xian" 2 #date: 2018/5/2 3 import requests #导入requests库 4 from requests.exceptions import RequestException #导入异常处理模块 具体见官网 5 import re #导入re模块 6 import json #导入json模块
      #import
    7 8 def get_one_page(url): #获取单个页面,RequestException用来捕获异常 9 headers = { 10 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36', 11 12 } #maoyan要求headers 13 try: 14 response = requests.get(url,headers = headers) 15 if response.status_code == 200: 16 return response.text 17 else: 18 return None 19 except RequestException: 20 return None 21 22 def parse_one_page(html): #利用正则解析单个页面 23 pattern = re.compile('<dd>.*?board-index.*?>(d+)</i>.*?data-src="(.*?)"' 24 +'.*?name"><a.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>' 25 +'.*?integer">(.*?)</i>.*?fraction">(d+)</i>.*?</dd>',re.S) #生成一个正则表达式对象供后面调用 26 27 items = re.findall(pattern,html) 28 for item in items: 29 yield { 30 'index':item[0], 31 'image':item[1], 32 'title':item[2], 33 'authors':item[3].strip()[3:], 34 'time':item[4].strip()[5:], 35 'rating':item[5] + item[6], 36 37 }
     1 def write_to_file(content):#写入日志result.txt,其中encoding 和 ensure_ascii 解决编码问题,当然你也可以使用codecs模块
     2     with open('result.txt','a',encoding='utf8') as f:
     3         f.write(json.dumps(content,ensure_ascii=False) +'
    ')#json.dumps为了将内容转成json字符串
     4         f.close()
     5 
     6 def main():#主函数
     7     url = 'http://maoyan.com/board'
     8     html = get_one_page(url)
     9     for item in parse_one_page(html):
    10         print(item)
    11         write_to_file(item)
    12 
    13 if __name__ == '__main__':
    14     main()#解决战斗,妈妈再也不用担心我的学习了!

    部分运行效果图:

  • 相关阅读:
    Oracle DBA手记3:数据库性能优化与内部原理解析
    产品部和业务部门的利益之争
    利用dir函数查询各个数据类型的方法
    Python自动单元测试框架
    十一长假归来
    我心爱的TT被我擦到了,伤心!
    150首现代最流行的歌曲连放
    Increase bugzilla attachment size
    Python中的搜索路径
    抛出异常
  • 原文地址:https://www.cnblogs.com/518894-lu/p/8982424.html
Copyright © 2011-2022 走看看