requests爬虫使用代理IP 1、新建程序爬取豆瓣250,使用requests 2、代理的使用:使用免费代理、使用自己的代理 3、数据要存到数据库
时间: 2024-10-09 16:03:30 浏览: 23
使用Python的Requests库和Beautiful Soup库来爬取豆瓣电影Top250的数据
在使用requests爬虫时,如果需要通过代理IP访问网站,可以按照以下步骤操作:
1. 新建Python程序:
```python
import requests
import json
def get_douban_movies_with_proxy(proxy_url=None):
headers = {'User-Agent': 'Mozilla/5.0'}
proxies = {'http': proxy_url} if proxy_url else {}
try:
# 使用代理IP访问豆瓣Top250页面
response = requests.get("https://movie.douban.com/top250", headers=headers, proxies=proxies)
# 检查请求状态
response.raise_for_status()
# 解析并返回JSON数据
data = json.loads(response.text)
top_movies = data['subjects']
return top_movies
except Exception as e:
print(f"获取数据出错:{e}")
return []
# 例子:使用免费代理(如:free-proxy-list.net提供的API)
def get_free_proxy():
free_proxy_url = "https://api.proxyscrape.com/v2/?request=getproxies&protocol=http&timeout=10000&country=all"
response = requests.get(free_proxy_url)
if response.status_code == 200:
proxy_data = response.json()
proxy = proxy_data[0]['ip_port']
return proxy
else:
print("无法获取免费代理")
return None
# 使用自定义代理
custom_proxy = "your_custom_proxy_url:port"
movies = get_douban_movies_with_proxy(custom_proxy)
```
2. 数据存储:
为了将抓取的数据存入数据库,首先需要安装一个合适的ORM库,比如SQLAlchemy。假设我们选择SQLite作为数据库:
```python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class Movie(Base):
__tablename__ = 'douban_movies'
id = Column(Integer, primary_key=True)
title = Column(String)
rating = Column(Integer)
# 创建数据库引擎
engine = create_engine('sqlite:///douban_movies.db')
# 创建Session
Session = sessionmaker(bind=engine)
session = Session()
movies_to_store = [Movie(title=m['title'], rating=m['rate']) for m in movies]
session.add_all(movies_to_store)
session.commit()
阅读全文