豆瓣Top250爬虫,jupyter Notebook 相关演示程序源代码+说明
### 项目涉及内容
- 获取豆瓣Top250电影的基本信息,并导入到表格
- 根据的到的基本信息表格用matplotlib,绘制图表,分析其各字段的相关性
- 获取所有电影的内容简介,并导入到txt文件中
###二、代码详解
### (一)Top250电影信息
#### 涉及文件
- **Top250details.py**
- **top250.xlsx**
#### 要点/步骤
- 爬虫的时候会出现禁止访问的情况,首先需要定义headers 并在requests中传参
> requests.get(url=MainPage,headers=headers)
是在没办法是可以通过重启路由器 或重启手机换自己的网络ip
- Top250网址有10页,需要对网址进行翻页操作
主要通过对网址的结构观察得到start=后的数字不同,每一页都是累加25 对该数字累加实现跳转
> MainPage ="https://movie.douban.com/top250?start=" + str(x) + '&filter='
- 每部电影的信息采集需要匹配个字段需要存在各变量中,通过find查找
```python
Soup = BeautifulSoup(strMainpage,'lxml')
# 在获取解析好BeautifulSoup类Soup中寻找class='grid_view'的'ol'标签 25条记录的details都写在该标签下
ol_tag = Soup.find('ol',class_='grid_view')
# 在找到的'ol'标签中寻找所有的li标签 共会得到25条
details = ol_tag.find_all('li')
# li标签迭代 即每条记录中寻找各类信息
for detail in details:
#电影排名 存放在em标签中 获取其text属性
movie_rank= detail.find('em').text
#电影标题 存放在class='title' 的span标签 获取其text属性
movie_title= '《' + detail.find('span', class_='title').text + '》'
#电影别名 与title同理 存放在class='other'的span标签中
movie_other= '《' + detail.find('span',class_='other').text.split('\xa0')[-1].strip() + '》'
#电影评论数 运用正则表达式 寻找 xxx人评价的字段 将他变成字符串 用切片的方法取倒数第三个字以前的内容
movie_CommentNum= detail.find(text=re.compile(r'\d+人评价')).string[:-3]
#电影评分 寻找class='rating_num'的span标签 获取其text属性
movie_score= detail.find('span', class_='rating_num').text
#查看页面结构 会发现上映时间等信息都存在p标签中 所以先获取p标签的所有内容
......