爬虫---Beautiful Soup 通过添加不同的IP请求
上一篇爬虫写了如何应付反爬的一些策略也简单的举了根据UA的例子,今天写一篇如何根据不同IP进行访问豆瓣网获取排行版
requests添加IP代理
如果使用代理的话可以通过requests中的方法proxies
def request(method, url, **kwargs):
"""Constructs and sends a :class:`Request <Request>`.
:param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. 太多了,删除了一些留下了主要
会有人问,这么多代理去哪里找?小编百度了找了一些发现西刺代理挺好用的。
随便从里面找1个进行发请求
# coding:utf-8
import requests
url ="http://httpbin.org/get"
proxy = '117.191.11.73:80'
proxies = {
'http':'http://'+proxy,
'https':'https://'+ proxy
}
r =requests.get(url,proxies=proxies)
print(r.text) 代码结果:
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.21.0",
"X-Via": "Cache-363"
},
"origin": "117.191.11.73, 117.191.11.73",
"url": "https://httpbin.org/get"
}
通过代理抓取豆瓣网
1.通过requests请求地址:https://movie.douban.com/top250
2.添加代理IP
3.通过Beautiful Soup获取Html页面
4.进行分析Html页面,完成对导演,电影名称,评分的抓取
代码结果:
import requests
from bs4 import BeautifulSoup
import re
# 请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit'
'/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400'
}
# 添加代理
proxies = {
'http':'http://113.121.22.92:808',}
r = requests.get(url,headers=headers,proxies=proxies)
html = r.content.decode('utf-8')
blog = BeautifulSoup(html,'html.parser')
daoyan = blog.find_all('p',class_='') # 导演
titles = blog.find_all('div',class_='hd') # 电影名称
pingfen = blog.find_all('span',class_='rating_num') # 评分
for title,daoya, pingfe in zip(titles,daoyan,pingfen):
m = title.get_text().split('\n')[2]
x = daoya.get_text().strip()
x1 = re.findall(r'导演: (.*?)\xa0',x)
cc = pingfe.get_text()
print(m)
print(x1)
print(cc)
代码执行完后发现只抓取了第一页的数据,而我们想要的时候全部数据,那么我们就继续分析URL路径
# 第一页的URL地址
https://movie.douban.com/top250 # 第二页的URL地址
https://movie.douban.com/top250?start=25&filter= # 第三页的URL地址
https://movie.douban.com/top250?start=50&filter=
经过观察我们可以发现后面唯一变得数据就是start,那么我们可以通过拼接URL获取全部数据,并且把这么数据写入到TXT文件中
import requests
from bs4 import BeautifulSoup
import re
page = 0
base_url = 'https://movie.douban.com/top250?start='
# 通过循环拼接URL
while page<10:
url = base_url + str(25*page)
page += 1
# 请求头
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
'/Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2372.400 QQBrowser/9.5.10548.400'
}
# IP代理
proxies = {
'http':'http://113.121.22.92:808',}
r = requests.get(url,headers=headers,proxies=proxies)
html = r.content.decode('utf-8')
blog = BeautifulSoup(html,'html.parser')
daoyan = blog.find_all('p',class_='') # 导演
titles = blog.find_all('div',class_='hd') # 电影名称
pingfen = blog.find_all('span',class_='rating_num') # 评分
for title,daoya, pingfe in zip(titles,daoyan,pingfen):
m = title.get_text().split('\n')[2]
x = daoya.get_text().strip()
x1 = re.findall(r'导演: (.*?)\xa0',x)
cc = pingfe.get_text()
# 写入到txt文件中
with open('123.txt','a+',encoding='utf-8')as f :
f.write('{m}\t{x1}\t{cc}\n'.format(m=m,x1=x1,cc=cc))
通过查看TXT文件,发现已经成功的获取到了豆瓣网的电影信息。
这个案例只是简单的表达我们可以通过IP代理的方式进行来完成爬虫(当然不用代理一样可以请求成功,只是简单的表达下思想,思想学会了,其他的都是简单的问题了)
以后我们如果遇到了封IP的网站都可以通过添加IP代理的方式进行爬取数据;
如果感觉安静写的内容对你有帮助,请点击个关注,内容持续更新中~~~~~
爬虫---Beautiful Soup 通过添加不同的IP请求的更多相关文章
- 爬虫---Beautiful Soup 反反爬虫事例
前两章简单的讲了Beautiful Soup的用法,在爬虫的过程中相信都遇到过一些反爬虫,如何跳过这些反爬虫呢?今天通过知乎网写一个简单的反爬中 什么是反爬虫 简单的说就是使用任何技术手段,阻止别人批 ...
- 爬虫---Beautiful Soup 初始
我们在工作中,都会听说过爬虫,那么什么是爬虫呢? 什么是网络爬虫 爬虫基本原理 所谓网络爬虫就是一个自动化数据采集工具,你只要告诉它要采集哪些数据,丢给它一个 URL,就能自动地抓取数据了.其背后的基 ...
- 爬虫-Beautiful Soup模块
阅读目录 一 介绍 二 基本使用 三 遍历文档树 四 搜索文档树 五 修改文档树 六 总结 一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通 ...
- 爬虫---Beautiful Soup 爬取图片
上一篇简单的介绍Beautiful Soup 的基本用法,这一篇写下如何爬取网站上的图片,并保存下来 爬取图片 1.找到一个福利网站:http://www.xiaohuar.com/list-1-1. ...
- Python爬虫利器:Beautiful Soup
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.使用它来处理HTML页面就像JavaScript代码操作HTML DOM树一样方便.官方中文文档地址 1. 安 ...
- python爬虫之解析库Beautiful Soup
为何要用Beautiful Soup Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式, 是一个 ...
- python 爬虫利器 Beautiful Soup
python 爬虫利器 Beautiful Soup Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文 ...
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(1): 基础知识Beautiful Soup
开始学习网络数据挖掘方面的知识,首先从Beautiful Soup入手(Beautiful Soup是一个Python库,功能是从HTML和XML中解析数据),打算以三篇博文纪录学习Beautiful ...
随机推荐
- python获取某路径下,某种特定类型的文件名称,os.walk(路径)生成器;os.listdir(路径),os.path.splitext(名称),os.path.join(路径,名称),os.path.isdir(路径\名称)
#获取某文件夹下制定类型文件# import os# def filep(fp):# l=[]# a=os.walk(fp) #生成器# for nowp,sonp,oth in a: #当前目录,子 ...
- ACM-后序遍历(简单方法和正规方法)
1.后序遍历简单方法 /**二叉树遍历一般有三种方法:前序,中序,后序.*其中前序遍历u顺序为:根->左子树->右子树,在此定义一种新的遍历方法:根->右子树->左子u树*使用 ...
- 选择排序法(C语言)
基本思路 在每一次的排序中选出最小(或最大)的数,将其放在数组最前端,然后在后面的数中重复此步骤,最终达到排序的目的. 算法描述 将存于数组首位数与后面的数依次比较,将其中的较小的数放到数组放到数组首 ...
- 教你用好 Javascript 数组
原文链接:https://juejin.im/post/5d9769b26fb9a04df26c1b89 作为 Javascript 的标准对象之一,数组是非常底层而且实用的数据结构.虽然结构很简单, ...
- ST表基础模板
ST表是用来求RMQ问题(求区间最大或最小值问题)的实用数据结构,支持\(O(nlog_n)\)建立,\(O(1)\)查询,是比较高效的结构 其原理实质上是DP(我最讨厌的东西) 题面:屠龙宝刀... ...
- 经典排序 python实现
稳定的排序算法:冒泡排序.插入排序.归并排序和基数排序. 不是稳定的排序算法:选择排序.快速排序.希尔排序.堆排序. 冒泡 def bobble(arr): length = len(arr) for ...
- 剑指offer:剪绳子(找规律,贪心算法,动态规划)
1. 题目描述 /* 题目描述 给你一根长度为n的绳子,请把绳子剪成m段(m.n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]xk[1] ...
- webpack-dev-server 不是内部或外部命令,也不是可运行的程序 解决方案
我看了网上的 一些解决方案,说是webpack版本不对,但我按照提示操作后依然不行: 要先确认是否安装了webpack-dev-server,如果没有安装,安装便可以解决: 粗暴的解决方案是删除nod ...
- java优化细节记录
此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...
- Mysql中使用JDBC流式查询避免数据量过大导致OOM
一.前言 java 中MySQL JDBC 封装了流式查询操作,通过设置几个参数,就可以避免一次返回数据过大导致 OOM. 二.如何使用 2.1 之前查询 public void selectData ...