分析走一走
直接猫眼官网
然后榜单一条龙
右键检查
dd(弟弟)标签包含了所有的排名信息
再看看网页url
搜打死内
每页十个dd(弟弟)
对应每页十个榜单
url的最后offset=0和offset=10 and so on 对应的是第几页
大概就是这么个情况
那就仔细看看dd(弟弟)标签的内容
不想多废话了
上图
图上啥也有
那接下来干啥呢?
盘他
import re
import requests
from requests.exceptions import RequestException #调用异常处理
import json
def get_url(url): #使用header获取网页信息
try: #异常处理
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
response = requests.get(url,headers = header)
if response.status_code == 200: #判断获取是否正常
return response.text
return None
except RequestException:
return None
def parse_html(html): #准备使用正则解析网页
pattern = re.compile('<dd>.*?>(\d+)</i>.*?<a.*?href="(.*?)".*?title="(.*?)".*?>.*?'
'<img.*?>.*?<.*?src="(.*?)".*?star">(.*?)</p>.*?releasetime">'
'(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)
temp = re.findall(pattern,html)
for i in temp:
yield{ #生成器生成字典形式
'number':i[0],
'address':i[1],
'name':i[2],
'image':i[3],
'actor':i[4].strip()[3:],
'time':i[5].strip()[5:],
'score':i[6]+i[7]
}
print('排名:' + i[0])
print('地址:https://maoyan.com' + i[1])
print('电影名:' + i[2])
print('图片:' + i[3])
print('演员:' + i[4].strip()[3:])
print('时间:' + i[5].strip()[5:])
print('评分:' + i[6] + i[7])
print('')
def save(content): #保存文件
with open ('result.txt','a',encoding='utf-8') as f: #保存编码utf-8
f.write(json.dumps(content,ensure_ascii = False) + '\n') #关掉ensure_ascii才可以正常输出中文
def main(offset): #主函数
url = 'https://maoyan.com/board/4?offset=' + str(offset)
html = get_url(url)
parse_html(html)
for item in parse_html(html): #遍历1~10页
print(item)
save(item)
if __name__ == '__main__': #起始端
for i in range(10):
main(i*10)
中间添加了一个print
这样输出结果舒服多了 但是保存的文件内容就是一坨屎一样难看
聊以自慰吧