爬虫:爬取猫眼电影榜单top100
本文是我第一篇爬虫实战的代码,多有借鉴和参考,主要做学习用
import requests,json
import pandas as pd
from requests.exceptions import RequestException
from bs4 import BeautifulSoup
def get_one_page(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;
Win64;
x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36'
}
response=requests.get(url,headers=headers)
try:
if response.status_code==200:#确认状态码为200
return response.text
return None
except RequestException:
return print("页面访问错误")def parse_one_page(html):
soup = BeautifulSoup(html,'lxml')
body = soup.select('.board-wrapper dd')
for i in body:
yield{
'index':i.select('.board-index')[0].get_text(),
#排名
'name':i.select('.name a ')[0].get_text(),
#电影名
'img':i.select('.board-img')[0].attrs['data-src'],
#图片链接
'star':i.select('.star')[0].get_text().strip() ,#strip去除两边空格
#演员
'releasetime':i.select('.releasetime')[0].get_text()[5:], #去除上映时间
#上映时间
}
def main(offset):
url = 'https://maoyan.com/board/4?offset='+str(offset)
html = get_one_page(url)
dy = parse_one_page(html)
with open('dianying.txt','a',encoding='utf8') as f:
for item in dy:
#禁用ascii码防止乱码
f.write(json.dumps(item,ensure_ascii=False)+'\n')
print(item)
if __name__ == '__main__':
#offset的每次变化都是+10
for i in range(10):
offset=i*10
main(offset)
运行结果如下:
文章图片
jupyter notebook视图
文章图片
未处理的txt文件
再通过excel导入外源文件(如上txt),经过操作处理为以下数据:
文章图片
数据量较小,并未使用MySQL 总结 【爬虫:爬取猫眼电影榜单top100】1.了解了requests,json,BeautifulSoup包的使用
2.了解爬虫基础流程以及运行原理
3.导入excel时有乱码,调整语言类型为-无-即可
推荐阅读
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 使用协程爬取网页,计算网页数据大小
- 爬虫数据处理HTML转义字符
- 2018-12-05爬虫
- Python实战计划学习笔记(9)为大规模爬取准备
- Python爬虫技术要学到什么程度才可以找到工作()
- python|python 爬虫抓取图片
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- 爬取网易云音乐