Re+Selenium新手爬取猫眼Top 100
2017-12-04 22:38
253 查看
看完了视频后,照猫画虎的把源码写了,有不懂的地方做了注释,以后还是把知识点或者难的地方写在博客上,也方便查询一些,上次的.format运算当时记得住现在就忘了,结果在写进程池之前只能用最弱智的for循环。。。
对于源代码的爬取,猫眼有最初级的反爬取措施,所以无法直接用request来进行解析,所以用了之前看到的selenium库来得到源码,其实这些用美丽汤很好写,但是也算是练习Re了。
下面是代码
主要有几个部分,因为python是大一学的,而且学的很水,所以不扎实,比如.format和yield(函数生成器),另外json之前也没接触过。写完这篇之后,我会把这三个点重新写一下,当作积累。在学习爬虫之余顺便把python有意思的地方再来一遍。
对于源代码的爬取,猫眼有最初级的反爬取措施,所以无法直接用request来进行解析,所以用了之前看到的selenium库来得到源码,其实这些用美丽汤很好写,但是也算是练习Re了。
下面是代码
from selenium import webdriver#引入浏览器对象 from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver import ActionChains#交互动作,如拖拽 import time from multiprocessing import Pool import re import json def get_one_page(url):#得到网页源代码 try: browser = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") browser.get(url) return browser.page_source finally: browser.close() 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)#匹配正则表达式 items=re.findall(pattern,html) for item in items:#yield的用法,函数生成器的用法 yield{ 'index':item[0], 'image':item[1], 'title':item[2], 'actor':item[3].strip()[3:],#去除空格 'time':item[4].strip()[5:], 'score':item[5]+item[6] } def write_to_file(content): with open('C:/Users/张启航/Desktop/res.txt','a',encoding='utf-8') as f: f.write(json.dumps(content,ensure_ascii=False)+'\n')# dumps是将字典(dict)格式转化成字符串(str)格式 f.close() def main(offset):#对单个给定offset的网页进行读取 url = 'http://maoyan.com/board/4?offset='+str(offset) print(url)#测试网址输出是否正确 the_source=get_one_page(url) for item in parse_one_page(the_source): write_to_file(item) if __name__=='__main__': pool=Pool()#引入进程池,加快程序 pool.map(main,[i*10 for i in range(10)])
主要有几个部分,因为python是大一学的,而且学的很水,所以不扎实,比如.format和yield(函数生成器),另外json之前也没接触过。写完这篇之后,我会把这三个点重新写一下,当作积累。在学习爬虫之余顺便把python有意思的地方再来一遍。
相关文章推荐
- Python爬取猫眼top100排行榜数据【含多线程】
- 笔记-多进程抓取猫眼TOP100
- 利用requests和正则表达式re爬取猫眼电影top100,并下载图片
- requests+正则表达式抓取猫眼top100(待续)
- 猫眼爬虫Top100
- python 爬虫项目-爬取猫眼top100电影
- Python 爬取 猫眼 top100 电影例子
- python3 爬取猫眼榜单top100(requests+beautifulsoup)
- GitHub Android Librarys Top 100 简介
- 最常犯的 HTML 标识错误 Top 100
- 2007年最受欢迎的资源top100
- 2008年最受欢迎的资源TOP100
- 新手学习selenium路线图(老司机亲手绘制)
- Requests+正则表达式爬取猫眼电影top100
- 2014年最热门的国人开发开源软件TOP100
- GitHub Top 100 简介
- GitHub Android Libraries Top 100 简介
- 随手记:机器学习工程师新手最常犯的六种错误(Top 6 errors novice machine learning engineers make)
- iOS在GitHub Top 前100 简介
- IOS Top100的第三方库整理