代理池抓取基础版-(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 协程总结 理解 协程,又称为微线程,看上去像是子程序,但是它和子程序又不太一样,它在执行的过程中,可以在中断当前的子程序后去执行别的子程序,再返回来执行之前的子程序,但是它的相关信息还是 ...
随机推荐
- 如何将.Net Core应用程序部署在Linux操作系统上运行
.Net Core简介 跨平台: 可以在 Windows.macOS 和 Linux 操作系统上运行. 跨体系结构保持一致: 在多个体系结构(包括 x64.x86 和 ARM)上以相同的行为运行代码. ...
- 将java项目转换成javaWeb项目
1.Ctrl+Shift+R快捷键:找到此项目中的.project文件,打开修改文件内容 在<natures> </natures>代码标签中,添加些内容: <natur ...
- Java多态性应用——多态数组、多态参数
多态数组: Person[] person = {new Person("张三", 32), new Student("李四", 21, 120, 90.0), ...
- SQL查询结果增加序列号
SQL查询记录中增加序列号 根据学生成绩在查询结果中增加排名字段: 1.SELECT ROW_NUMBER() OVER (ORDER BY SCORE ASC) AS RANK,NAME,SCORE ...
- VSCode工具插件推荐
一:VSCode简介 VSCode( Visual Studio Code)是微软出的一款轻量级代码编辑器 ,重要的是它在Windows, OS X 和Linux操作系统的桌面上均可运行.Visual ...
- dfs(找环)
https://codeforces.com/problemset/problem/1249/B2 B2. Books Exchange (hard version) time limit per t ...
- 【题解】Shortest Cycle
原题链接:CF1205B 题目大意 给定\(n\)个整数\(a_1,a_2,a_3, \dots ,a_n\),若\(i \neq j\)且\(a_i \land a_j \neq 0\),则 ...
- Python时间模块datetime用法
时间模块datetime是python内置模块,datetime是Python处理日期和时间的标准库. 1,导入时间模块 from datetime import datetime 2,实例 from ...
- 前端:let与var的区别
详细情况可跳转到下面这个链接阅读: https://www.cnblogs.com/yukixing/p/11523259.html [收集别人总结好的知识点,也是高效学习的一种方式!]
- vue-fiters过滤器的使用
1.定义过滤器 2.使用过滤器 ...... <el-table-column prop="user_gender" align="center" lab ...