我要爬爬虫(6)-爬取猫眼Top100电影
程序员文章站
2022-05-08 10:56:33
...
直接上代码
import requests
import re
import json
import time
#传入偏移量返回指定网页文本
def make_url(offset):
url='http://maoyan.com/board/4?offset='+str(offset*10)
#print(url)
header={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
}
try:
response=requests.get(url,headers=header)
#先判断返回的状态码
if response.status_code==200:
return response.text
else:
return None
except:
return None
#用正则匹配网页目标内容
def crawl(pure_text):
pattern='<img data-src="(.*?)".*?<p class="name.*?title="(.*?)".*?上映时间:(\d{4}-\d{2}-\d{2}).*?<p class="score.*?integer">(.*?)<.*?fraction">(\d)<'
result=re.findall(pattern,pure_text,re.S)
for item in result:
#这里使用生成器,每次生成一个电影
yield {
'image':item[0],
'title':item[1],
'date':item[2],
'score':item[3]+item[4]
}
#将匹配到的内容写入文本里
def write_file(content):
#写入模式选择a即为追加,w为覆盖
with open('maoyan.txt','a',encoding='utf-8') as f:
#print(type(json.dumps(content)))
f.write(json.dumps(content,ensure_ascii=False)+'\n')
#执行函数:爬取+写入
def main(i):
for item in crawl(make_url(i)):
print(item)
write_file(item)
if __name__=='__main__':
#这里的i为偏移量
for i in range(10):
main(i)
time.sleep(1)
本身难度不大,但我在代码规范和函数封装方面加深了认识。
推荐阅读
-
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
-
Python爬虫实战之Requests+正则表达式爬取猫眼电影Top100
-
Python爬虫学习==>第十章:使用Requests+正则表达式爬取猫眼电影
-
Python:爬虫实例2:爬取猫眼电影——破解字体反爬
-
python正则表达式爬取猫眼电影top100
-
Python爬虫项目实战-爬取猫眼电影
-
Python爬虫爬取猫眼电影热映口碑榜
-
Python爬虫学习教程 猫眼电影网站视频爬取!【附源码】
-
requests+BeautifulSoup爬取猫眼电影top100
-
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息