代理ip的方法是反爬虫的主要手段(搭建自己的代理池)
代理ip的方法是反爬虫的主要手段(搭建自己的代理池)后面多寻找几个网站试试,今天 就先到这里。我是爬虫小白,今后也是# _*_ coding:utf8 _*_ import requests from bs4 import BeautifulSoup from multiprocessing import Pool from pymongo import MongoClient import re data = [] # 用来存放爬取到的ip # 爬取单个页面的ip def getip(page): db = MongoClient('127.0.0.1' 27017).test # url = "https://www.89ip.cn/index_%s.html" % page # 该代理检测不可用 url = 'http://www.66ip.cn/%s.htm
这是一篇记录自己踩坑的文章
爬取网页分三大步骤:
- 分析目标网站
- 着手编写代码
- 保存数据
下面开始今天的主题。上目标网站(66免费代理)
首先分析网页,我们要爬取的是ip和端口号
所有数据都存在表格里
查看网页源码,发现数据直接在源码中,因此开始接下来的操作,提取数据,使用BeautifulSoup解析。
先拿到每一页上的所有行,再提取每一个单元格中的内容,相信见代码
# _*_ coding:utf8 _*_
import requests
from bs4 import BeautifulSoup
from multiprocessing import Pool
from pymongo import MongoClient
import re
data = [] # 用来存放爬取到的ip
# 爬取单个页面的ip
def getip(page):
db = MongoClient('127.0.0.1' 27017).test
# url = "https://www.89ip.cn/index_%s.html" % page # 该代理检测不可用
url = 'http://www.66ip.cn/%s.html' % page
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\
(KHTML like Gecko) Chrome/87.0.4280.88 Safari/537.36'
'Referer': 'http://www.66ip.cn/index.html'
}
resp = requests.get(url=url headers=headers timeout=2)
soup = BeautifulSoup(resp.text 'lxml')
for item in soup.find_all('tr')[2:]:
try:
ip = item.find_all('td')[0].get_text().strip()
port = item.find_all('td')[1].get_text().strip()
data.append({'ip': '{}:{}'.format(ip port) 'verify': False})
if len(data) == 0:
print("结束")
print(data)
db.ippool.insert_many(data)
# print(port)
except:
continue # 发生异常的时候跳过此次爬取,继续下一轮
经过一番操作,成功获取数据,后面就是比较糟糕的事情了。我们爬取代理ip的主要目的是什么,当然是使用他们呀。在我校验之后,一万多个代理ip没有一个能用的。[流泪][笑哭]
后面多寻找几个网站试试,今天 就先到这里。我是爬虫小白,今后也是