这是一篇记录我的坑的文章
抓取网页主要分为三个步骤:
分析目标网站并开始编译代码以保存数据
我们开始明天的话题吧。 前往目标网站(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没有一个可用。 [哭][笑又哭]
我会提前尝试多找几个网站网站代理程序,明天先到这里。我是爬虫新手,从现在开始