代理池抓取基础版-(python协程)--抓取网站(西刺-后期会持续更新)
# coding = utf- __autor__ = 'litao' import urllib.request
import urllib.request
import urllib.error
import socket
import gevent
from gevent import monkey
from bs4 import BeautifulSoup
import time
import random
home = "http://www.xicidaili.com/wt/"
first_proxy_list = []
end_proxy_list = []
# proxy_support = urllib.request.ProxyHandler({"http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080"})
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36"
}
monkey.patch_all()
def test_proxy(proxy_key):
# for i in range(len(first_proxy_list)):
# proxy_support = urllib.request.ProxyHandler({"http":proxy_list[i]})
print(proxy_key)
proxy = {"http":proxy_key}
url = "https://www.baidu.com/" proxy_support = urllib.request.ProxyHandler(proxy)
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
res = urllib.request.Request(url=url, headers=headers)
try:
response = urllib.request.urlopen(res,timeout=)
if response.code == :
end_proxy_list.append(proxy_key)
except Exception as e:
print("error:",e)
# except socket.timeout as e:
# print("This proxy is socket.timeout")
# except urllib.error.URLError as e:
# print("This proxy is timeout") def get_proxy_list():
for i in range():
url =home + str(i+)
print(url)
# proxy_support = urllib.request.ProxyHandler({"http":"123.125.5.100:3128"})
# opener = urllib.request.build_opener(proxy_support)
# urllib.request.install_opener(opener)
res = urllib.request.Request(url=url, headers=headers)
response =urllib.request.urlopen(res,timeout=).read().decode()
soup = BeautifulSoup(response,'html.parser')
print(response)
content = soup.find_all("table",attrs={"id":"ip_list"})[].find_all('tr')[:]
for i in range(len(content)):
result = content[i].find_all('td')
proxy_enum = result[].text+":"+result[].text
print(proxy_enum)
first_proxy_list.append(proxy_enum)
time.sleep(random.randint(,)) def join_gevent(first_proxy_list,gevent_list):
for i in range(len(first_proxy_list)):
gevent_list.append(gevent.spawn(test_proxy,first_proxy_list[i])) def main():
gevent_list = []
get_proxy_list()
with open("proxy_first.txt",'a',encoding='utf-8') as f:
for item in first_proxy_list:
f.write(item+'\n')
join_gevent(first_proxy_list, gevent_list)
gevent.joinall(gevent_list)
print(end_proxy_list)
with open("proxy_end.txt",'a',encoding='utf-8') as f:
for item in end_proxy_list:
f.write(item+'\n') if __name__ == "__main__":
main()
代理池抓取基础版-(python协程)--抓取网站(西刺-后期会持续更新)的更多相关文章
- python协程爬取某网站的老赖数据
import re import json import aiohttp import asyncio import time import pymysql from asyncio.locks im ...
- Python协程爬取妹子图(内有福利,你懂得~)
项目说明: 1.项目介绍 本项目使用Python提供的协程+scrapy中的选择器的使用(相当好用)实现爬取妹子图的(福利图)图片,这个学会了,某榴什么的.pow(2, 10)是吧! 2.用到的知 ...
- Python爬虫练习(多线程,进程,协程抓取网页)
详情点我跳转 关注公众号"轻松学编程"了解更多. 一.多线程抓取网页 流程:a.设置种子url b.获取区域列表 c.循环区域列表 d.创建线程获取页面数据 e.启动线程 impo ...
- 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程
点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...
- Python协程与Go协程的区别二
写在前面 世界是复杂的,每一种思想都是为了解决某些现实问题而简化成的模型,想解决就得先面对,面对就需要选择角度,角度决定了模型的质量, 喜欢此UP主汤质看本质的哲学科普,其中简洁又不失细节的介绍了人类 ...
- python协程详解,gevent asyncio
python协程详解,gevent asyncio 新建模板小书匠 #协程的概念 #模块操作协程 # gevent 扩展模块 # asyncio 内置模块 # 基础的语法 1.生成器实现切换 [1] ...
- Python核心技术与实战——十六|Python协程
我们在上一章将生成器的时候最后写了,在Python2中生成器还扮演了一个重要的角色——实现Python的协程.那什么是协程呢? 协程 协程是实现并发编程的一种方式.提到并发,肯很多人都会想到多线程/多 ...
- 046.Python协程
协程 1 生成器 初始化生成器函数 返回生成器对象,简称生成器 def gen(): for i in range(10): #yield 返回便能够保留状态 yield i mygen = gen( ...
- Python 协程总结
Python 协程总结 理解 协程,又称为微线程,看上去像是子程序,但是它和子程序又不太一样,它在执行的过程中,可以在中断当前的子程序后去执行别的子程序,再返回来执行之前的子程序,但是它的相关信息还是 ...
随机推荐
- Docker command line 学习笔记
deprecated ! 以后直接对这个更新 http://wangzhezhe.github.io/blog/2015/08/10/docker-operations/ 之前整理了好久,每次用到一点 ...
- STL关联式容器之set\map ----以STL源码为例
关联式容器的特征:所用元素都会根据元素的键值自动被排序. set STL 中的关联式容器低层数据结构为红黑树,其功能都是调用低层数据结构中提供的相应接口. set元的元素不会像map那样同时拥有键(k ...
- MySQL练习与小结
当你专注一件事的时候,时间总是过得很快! foreign key 练习 -- 切换数据库 use stumgr -- 删除班级表 drop table t_class1 -- 创建一个班级表 crea ...
- css的继承之width属性(容易忽略)
众所周知,css的三大特性分别是 继承性,层叠性,和优先级. 那么这里就详细说一下css中width的继承性及其特殊情况. 继承性概念详解:css的继承性指的被包在内部的标签拥有外部标签的样式性,子元 ...
- Vue2+VueRouter2+webpack 构建项目实战(四)接通api,先渲染个列表
Vue2+VueRouter2+webpack 构建项目实战(四)接通api,先渲染个列表: Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述
- [BZOJ2588]Count on a tree(LCA+主席树)
题面 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个询问 ...
- C++11常用特性总结
非原创,转载出处 http://www.cnblogs.com/feng-sc C++11已经出来很久了,网上也早有很多优秀的C++11新特性的总结文章,在编写本博客之前,博主在工作和学习中学到的关于 ...
- 确定Git与GitHub连接起来
1.准备工作 1)下载Git 2)注册GitHub 3)将Git与GitHub链接起来 1.获取ssh密匙 2.GitHub里 找到settings 填入密匙 2.正式开始 1)确定Git与GitHu ...
- Nginx处理前端跨域(补充)
在之前的博客中提到了用nginx来处理前后端跨域问题,用Nginx代理请求,处理前后端跨域 ,虽然解决当时了问题,但是在实际使用中还是不好用,当时应对的只是对单接口的处理,如果一个页面需要调用两个不同 ...
- R语言——ggplot2补充知识点
案例 ggplot(head(age_data,10),aes(x=reorder(Country,age_median),y=age_median))+ geom_bar(aes(fill=Coun ...