爬取豆瓣TOP250-避免反爬虫(2021-10-09)

前言

不适合没有爬虫基础的,自己写着玩玩,其中的IP地址,也是爬取下来的,实时在变
注意:没有对IP地址进行校验
爬取豆瓣电影,豆瓣电影现在都有反爬虫机制,我们采用2种方法:

  1. 不同浏览器标识:User_agent(模拟不同的浏览器)
  2. 不同的IP地址:proxies(防止IP地址被封)
  3. 爬取间隔2秒:防止网页扫描频繁操作

导入需要的库

import pandas as pd
import requests
from bs4 import BeautifulSoup
import random
import time

随机生产浏览器标识user-agent

#随机生成User_agent,浏览器标识
def get_ua():
    first_num = random.randint(55, 76)
    third_num = random.randint(0, 3800)
    fourth_num = random.randint(0, 140)
    os_type = [
        '(Windows NT 6.1; WOW64)', '(Windows NT 10.0; WOW64)', '(X11; Linux x86_64)',
        '(Macintosh; Intel Mac OS X 10_14_5)'
    ]
    chrome_version = 'Chrome/{}.0.{}.{}'.
  • 2
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是使用Python爬虫爬取豆瓣top250电影的具体过程: 1. 分析目标网站的网页结构和数据获取方式。在浏览器中打开豆瓣电影top250页面(https://movie.douban.com/top250),可以看到每部电影都有一个唯一的电影ID、电影名称、评分、导演、主演、年份等信息。这些信息都是通过HTML标签来展示的,我们需要使用Python爬虫程序来获取这些信息。 2. 安装必要的库。我们需要使用Python的requests库来发送HTTP请求,使用beautifulsoup库来解析HTML源码,使用pandas库来处理数据(可选)。 3. 发送HTTP请求。我们使用requests库发送GET请求,获取电影top250页面的HTML源码。 4. 解析HTML源码。我们使用beautifulsoup库来解析HTML源码,获取每部电影的电影ID、电影名称、评分、导演、主演、年份等信息。 5. 存储数据。可以将数据存储到本地文件或数据库中,也可以使用pandas库来处理数据。 6. 处理异常情况。在爬虫过程中可能会遇到一些异常情况,如请求超时、网站爬虫等,我们需要进行相应的处理,如设置请求头、使用代理IP等。 下面是使用Python爬虫程序爬取豆瓣top250电影的示例代码: ```python import requests from bs4 import BeautifulSoup import pandas as pd def get_movie_info(url): # 发送HTTP请求 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) html = response.text # 解析HTML源码 soup = BeautifulSoup(html, 'html.parser') items = soup.find_all('div', class_='item') movie_info_list = [] for item in items: movie_info = {} movie_info['电影ID'] = item.find('div', class_='hd').a['href'].split('/')[-2] movie_info['电影名称'] = item.find('div', class_='hd').a.span.text.strip() movie_info['评分'] = item.find('span', class_='rating_num').text.strip() movie_info['导演'] = item.find('div', class_='bd').p.text.split(':')[1].split('\n')[0].strip() movie_info['主演'] = item.find('div', class_='bd').p.text.split(':')[2].strip() movie_info['年份'] = item.find('div', class_='bd').p.text.split('/')[-2].strip() movie_info_list.append(movie_info) return movie_info_list if __name__ == '__main__': # 爬取豆瓣电影top250的前10页 movie_info_list = [] for i in range(10): url = 'https://movie.douban.com/top250?start={}&filter='.format(i * 25) movie_info_list += get_movie_info(url) # 存储数据到CSV文件 df = pd.DataFrame(movie_info_list) df.to_csv('douban_top250.csv', index=False) ``` 以上代码中,我们首先定义了一个`get_movie_info`函数,用于获取一个页面的电影信息。在函数中,我们使用requests库发送HTTP请求,获取电影页面的HTML源码,然后使用beautifulsoup库来解析HTML源码,获取电影的电影ID、电影名称、评分、导演、主演、年份等信息,并将这些信息保存到一个字典中。最后,我们将所有电影的信息保存到一个列表中,返回该列表。 在主函数中,我们循环爬取豆瓣电影top250的前10页,并将所有电影的信息保存到一个CSV文件中。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值