先来插一一句话,本篇文章以照顾新手为主,讲的比较慢,大佬们可以直接下滑到底部下载我的源码,进行修改哦~
我们是基于爬虫基础上进行代理池创建的,所以我们要对爬虫的节点选择要有一些了解,并且找到一个或多个提供免费代理的网站我们是基于爬虫基础上进行代理池创建的
如果对爬虫节点的选择没有了解,也没关系,本章会介绍部分节点选择的方法
(1.)确定IP节点:
将鼠标随机放到一个IP上 直接右键->检查 我们就可以找到IP对应的节点了。
(2.)确定PORT节点
方法同上
我们分析一下:
import requests
from lxml import etree
这两个库没有安装的小伙伴可以先安装一下,我记得安装起来应该挺简单的
为什么不用selenium库呢 虽然selenium库极其强大,但是用于创建代理池就有点小题大做了,而且运行起来也没有这两个库运行的快,安装起来也比较麻烦一点
我们将这些操作都放到一个函数中去
def get_url():
url = 'https://ip.ihuan.me/address/5Lit5Zu9.html?page=b97827cc'
html = requests.get(url).text
html = etree.HTML(html)
这样就够建好了html为解析对象
result = html.xpath('//td[2]/text()')
result2 = html.xpath('//td/a[@target="_blank"]/text()')
//td/a[@target=”_blank”]/text() 选中<td>节点下 target属性为_blank的子节点<a>,text()获取其文本 则result2 = “我们需要的IP”
//td[2]/text() 选择第二个<td>节点,获取文本内容 resul = “端口”
for a,b in zip(result2,result):
PORT = b
IP = a
DL = (a + ':' +b)
with open ('DL.txt','a') as f:
f.write(DL + "\n")
DL = “IP”:”PORT” 格式
lists = ['5crfe930','4ce63706','b97827cc']
def get_url(page):
url = 'https://ip.ihuan.me/address/5Lit5Zu9.html?page=' + page
html = requests.get(url).text
html = etree.HTML(html)
result = html.xpath('//td[2]/text()')
result2 = html.xpath('//td/a[@target="_blank"]/text()')
for a,b in zip(result2,result):
PORT = b
IP = a
DL = (a + ':' +b)
with open ('DL.txt','a') as f:
f.write(DL + "\n")
这里引用了lists列表,简单的循环三次请求,分别请求前三页的网址。 因为page后的值被加密了 短时间内很难找到规律。
不过当我们调用动态渲染的话(selenium库)就可以完美解决这个问题了,即可实现无视加密 放肆抓取的效果。
这里我就偷个懒了,0基础的萌新也很难看懂selenium库的使用,所以为了提高效率 我干脆用这种最直白的方法给你们爬一下。
def check(DL):
url = 'http://%s' % DL.rstrip()
try:
result = requests.get(url,timeout=5)
print(DL + "代理可用")
except:
print('代理不可用')
这样子就很舒服啦,我们设置一个发送一个请求,如果请求超时5秒,那么直接回显此代理不可用,如果5秒内请求成功,那么则证明此代理可用,并且将可用代理回显出来。
这里也可以用状态码(status_code)来进行验证 比较好用,我嫌麻烦懒得那么写了,因为并不是只有状态码为[200]的代理可用 其实[400]的也可以用。
for i in lists:
get_url(i)
with open('DL.txt','r') as F:
Str = F.readlines()
for DL in Str:
check(DL)
将lists中的page遍历到url中去,你列表写的越多,爬取的页面也就越多。
然后我们爬取的代理都会存放到与脚本的同目录下,DL.txt
将代理从文本中遍历到check()函数中去
import requests
from lxml import etree
def get_url(page):
url = 'https://ip.ihuan.me/address/5Lit5Zu9.html?page=' + page
html = requests.get(url).text
html = etree.HTML(html)
result = html.xpath('//td[2]/text()')
result2 = html.xpath('//td/a[@target="_blank"]/text()')
for a,b in zip(result2,result):
PORT = b
IP = a
DL = (a + ':' +b)
with open ('DL.txt','a') as f:
f.write(DL + "\n")
def check(DL):
url = 'http://%s' % DL.rstrip()
try:
result = requests.get(url,timeout=5)
print(DL + "可用")
except:
print('不可用')
lists = ['5crfe930','4ce63706','b97827cc']
for i in lists:
get_url(i)
with open('DL.txt','r') as F:
Str = F.readlines()
for DL in Str:
check(DL)
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
奖励系统 | 100.00 | 0 | 2020-08-08 16:04:39 | 投稿满 10 赞奖励 |
奖励系统 | 50.00 | 0 | 2020-08-06 22:10:03 | 投稿满 5 赞奖励 |
Track-聂风 | 80.00 | 0 | 2020-08-06 19:07:18 | 加油~支持同学 |
打赏我,让我更有动力~
The attachment is hidden and you need to reply to the topic before it becomes visible.
© 2016 - 2023 掌控者 All Rights Reserved.
zkzw990816
发表于 2020-8-6
来看看,风哥讲的
评论列表
加载数据中...
fenghua123
发表于 2020-8-6
谢谢大佬分享
评论列表
加载数据中...
marz13
发表于 2020-8-6
anjian nanfang 果然起名对事业有帮助
评论列表
加载数据中...
chenx
发表于 2020-8-7
可以增加一个多线程,单线程就比较麻烦,要一个一个的去验证。
评论列表
加载数据中...
weidong
发表于 2020-8-8
果然起名对事业有帮助
评论列表
加载数据中...
1554057597
发表于 2020-8-9
感觉挺厉害的 先留言看看隐藏附件
评论列表
加载数据中...
一岁时就很帅
发表于 2020-8-9
1
评论列表
加载数据中...
王灵
发表于 2020-8-9
e
评论列表
加载数据中...
羔羊
发表于 2020-8-10
厉害了
评论列表
加载数据中...
小黑飞了
发表于 2020-8-10
厉害
评论列表
加载数据中...
蝶舞恋冰
发表于 2020-8-10
牛逼大佬
评论列表
加载数据中...
1761012518
发表于 2020-8-10
tql
评论列表
加载数据中...
柠檬
发表于 2020-8-10
1111
评论列表
加载数据中...
盒子rex
发表于 2020-8-10
白嫖怪:我也要!
评论列表
加载数据中...
qmq287
发表于 2020-8-11
大佬nb
评论列表
加载数据中...
jimbo
发表于 2020-8-12
niu 牛,学习一下。
评论列表
加载数据中...
qq605198466
发表于 2020-8-21
谢谢大佬分享
评论列表
加载数据中...
j1tax
发表于 2020-8-23
学习了学习了
评论列表
加载数据中...
master666
发表于 2020-8-25
tql
评论列表
加载数据中...
zbzb456789
发表于 2020-8-26
厉害 厉害 学习到了
评论列表
加载数据中...