Python爬取神鸡免费 代理ip (一)。大家好,今天神鸡小编给大家分享一个Python爬取免费代理IP的一段代码。
首先分享一下思路。
1,预先从代理IP网站,爬取代理IP信息,存到数据库。
2,从数据库中随机提取一条代理IP。
3,提取代理IP需要注意有校性,通过和百度网站测试,删除无效代理IP,返回有效的代理IP。
说一下依赖包,然后我用的是Python3.6+Ubuntu16.04
importrequests
fromscrapy.selectorimportSelector
importpymysql
首先就是requests模块,用来发送请求。
然后就是scrapy,没错这就是爬虫框架,但是我们现在就只用到里面的Selector选择器进行提取数据,用起来比lxml方便多了。
最后就是数据库,这边我用的是最熟悉的MySQL数据,当然最优的选择是redis数据库,但是好多人对NoSQL数据不是很熟悉,所以我使用MySQL数据库来保存数据。
好现在开始代码实现,实现之前我们先创建数据库和数据表
"""
createdatabasesproxy_ipcharset=utf8;
CREATETABLE
ip_info
(
ip
varchar(20)NOTNULL,
port
varchar(5)NOTNULL,
speed
floatDEFAULTNULL,
proxy_type
varchar(5)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
"""
1
爬取数据存入数据库
#链接mysql数据库
conn=pymysql.connect(host='localhost',port=3306,database='proxy_ip',user='root',
password='mysql',charset='utf8')
#获取游标对象
cus=conn.cursor()
#首先定义一个函数来抓取代理IP到数据库当中
defcrawl_ips():
#首先清空表
sql="deletefromip_info;"
#执行
cus.execute(sql)
#提交
conn.commit()
url=" http://www.shenjidaili.com/nn/{} "
headers={
"User-Agent":"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/536.6(KHTML,likeGecko)Chrome/20.0.1092.0Safari/536.6"}
#记录次数
num=0
#我们循环10页抓取
forpinrange(1,11):
re=requests.get(url.format(p),headers=headers)
#我用了scrapy框架里面的选择器
select=Selector(text=re.text)
all_trs=select.xpath('//table[@id="ip_list"]')[0]
#获取整个tr标签
tr_list=all_trs.xpath("//tr")[1:]#去掉标题
fortrintr_list:
#提取ip
ip=tr.xpath('./td[2]/text()').extract()[0]
#提取端口
port=tr.xpath('./td[3]/text()').extract()[0]
#proxy_info['address']=tr.xpath('./td[4]/a/text()').extract()[0]
#提取速度
speed=tr.xpath('./td[7]/div/@title').extract()[0]
speed=(speed.split("秒"))[0]#从中把数字数据提取出来
#提取类型(http或者https)
type=tr.xpath('./td[6]/text()').extract()[0]
#把延迟速度小于2秒的存入数据可
iffloat(speed)
print("爬取的ip",ip,port,type,speed)
sql="""insertintoip_info(ip,port,speed,proxy_type)values('','',,'')""".format(
ip,port,speed,type
)
#执行
cus.execute(sql)
#提交
conn.commit()
num+=1
print("已经抓取{}条代理ip".format(num))
调用这个函数crawl_ips()往mysql数据库中存入数据
818
193