爬取猫眼电影
自己仔细研读了崔庆才老师的书爬取猫眼电影这一节深有感触,自己实际上在一年前就看过这一节的视频,但是当时没看懂(因为当时基础知识太差),经过大半年的积累,终于基本上能够看明白代码基础意思,按照崔庆才老师的博客写出自己的第一个爬虫代码。
https://germey.gitbooks.io/python3webspider/content/3.4-Requests%E4%B8%8E%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%88%AC%E5%8F%96%E7%8C%AB%E7%9C%BC%E7%94%B5%E5%BD%B1%E6%8E%92%E8%A1%8C.html
代码完整内容如下:
import requests import re import json from requests.exceptions import RequestException import time # 利用requests方法访问页面 def get_onepage(url): try: response=requests.get(url) if response.status_code==200: return response.text return None except RequestException: return None #提取文件中的重要内容 def parse_one_page(html): pattern = re.compile( '<dd>.*?board-index.*?>(.*?)</i>.*?title="(.*?)".*?data-src="(.*?)".*?<p class="star">(.*?)</p>.*?<p class="releasetime">(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>', re.S) items = re.findall(pattern, html) for item in items: yield{ 'index':item[0], 'title':item[1], 'image':item[2], 'actor':item[3].strip()[3:] if len(item[3])>3 else '', 'time':item[4].strip()[5:] if len(item[4])>6 else '', 'score':item[4].strip()+item[5].strip() } # 写入文件 def write_file(content): with open('result.text','a',encoding='utf-8') as f: f.write(json.dumps(content,ensure_ascii=False)+'\n')#注意这里要加这个'\n'来换行 # main方法作为所有函数的总开关,负责调用所有函数 def main(offset): url='https://maoyan.com/board/4?offset='+str(offset)#注意这里url的写法 html=get_onepage(url) for item in parse_one_page(html): print(item) write_file(item) # 分页爬取 if __name__=='__main__': for i in range(10): main(offset=i*10) time.sleep(1)#因为爬取速度过快,可能会引起错误,所以这里需要控制下爬取的速度