import requests
from pyquery import PyQuery as pq
import json
import jsonpath
from lxml import etree
import os
import re
import time html = '''
<div>
<ul>
<li class="item-0">first item</li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
<li class="item-1 active"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
</ul>
</div>
''' # html = requests.get('http://news.4399.com/gonglue/lscs/kptj/').content.decode('gbk')
num = 0
# def pq方法(url):
# global num
# html=requests.get(url).content.decode('gbk')
# doc = pq(html)
# items = doc('#dq_list > li').items()
# # print(doc)
# # print(type(doc))
# for item in items:
# url=item.find('img').attr('lz_src')
# num+=1
# print(str(num),url)
# url_content=requests.get(url).content
# name = item.find('.kp-name').text() # with open('e:/py3/002/'+'{:0>4}'.format(str(num))+name+'.jpg','wb') as file:
# file.write(url_content)
# # print(url,name) def transformCodec(re_data):#ascii (gbk) 转 unicode
try:
re_data = re_data.decode('gbk')
except Exception as error:
print (error)
print ('delete illegal string,try again...') pos = re.findall(r'decodebytesinposition([\d]+)-([\d]+):illegal',str(error).replace(' ',''))
if len(pos)==1:
re_data = re_data[0:int(pos[0][0])]+re_data[int(pos[0][1]):]
re_data = transformCodec(re_data)
return re_data
return re_data def lxml方法(url):
global num
header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6756.400 QQBrowser/10.3.2473.400'}
content=requests.get(url,headers=header).content
html=content.decode('utf-8')
# print(html.status_code)
# print(content)
# print(html)
r=etree.HTML(html)
# items=r.xpath("//div[@class='box10-content']//ul[@id='dq_list']/li/a/img/@lz_src")
items=r.xpath("//div[@id='list']/table//tr")
# print(items)
for item in items:
dl_ip=item.xpath("./td[1]/text()")
dl_port=item.xpath("./td[2]/text()")
dl_name=item.xpath("./td[5]/text()")
num+=1
dl_ip=dl_ip[0]+":" if len(dl_ip)>=1 else ''
dl_port=dl_port[0]+"#" if len(dl_port)>=1 else ''
dl_name=dl_name[0] if len(dl_name)>=1 else '' # print(len(dl_ip))
# print(dl_ip)
# print(r'{}{}{}'.format(dl_ip,dl_port,dl_name))
with open("proxy.txt",'a',encoding='utf-8') as file:
file.write('{}{}{}\n'.format(dl_ip,dl_port,dl_name))
# lzcontent=requests.get(lzsrc).content
# with open('e:/py3/004/'+'{:0>4}'.format(str(num))+'_'+kpname+'.jpg','wb')as file:
# file.write(lzcontent) if __name__ == '__main__':
with open("proxy.txt", 'w', encoding='utf-8') as file:
file.write(str(time.localtime()[0])+'_'+str(time.localtime()[1])+'_'+str(time.localtime()[2])+'_采集:\n')
# url='https://www.kuaidaili.com/free/inha/1/'
for i in range(1,11):
print('第'+str(i)+'次:\n')
url2 = r'https://www.kuaidaili.com/free/inha/'+str(i)+r'/'
print(url2)
lxml方法(url2)
time.sleep(5) # header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6756.400 QQBrowser/10.3.2473.400'}
# pq方法()
# print(str(time.localtime()[0])+'_'+str(time.localtime()[1])+'_'+str(time.localtime()[2]))
print(str(num)+' ok!') # 创建目录
'''
for dirnum in range(1,100):
dirnum2='{:0>3}'.format(str(dirnum))
mkpath="e:\\py3\\{}\\".format(dirnum2)
print(mkpath)
print('已存在!') if os.path.exists(mkpath) else os.makedirs(mkpath)
'''

lxml_time_代理的更多相关文章

  1. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  2. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  3. Visual Studio Code 代理设置

    Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...

  4. DynamicObject - 代理对象的种类

    开箱即用,DynamicProxy提供了多种代理对象,主要分成两个大类: 基于继承(Inheritance-based) 基于继承的代理是通过继承一个代理类来实现,代理拦截对类的虚(virtual)成 ...

  5. SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论

    异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#signalR 后台创建了一个DntHub的集线器 前台在调用的时候出现了问题(经检查是代理对象 ...

  6. 实现代理设置proxy

    用户在哪些情况下是需要设置网络代理呢? 1. 内网上不了外网,需要连接能上外网的内网电脑做代理,就能上外网:多个电脑共享上外网,就要用代理: 2.有些网页被封,通过国外的代理就能看到这被封的网站:3. ...

  7. 23种设计模式--代理模式-Proxy

    一.代理模式的介绍       代理模式我们脑袋里出现第一个词语就是代购,其实就是这样通过一个中间层这个中间成是属于什么都干什么都买得,俗称"百晓生",在平时得开发中我们经常会听到 ...

  8. 使用Java原生代理实现AOP

    ### 本文由博主柒.原创,转载请注明出处 ### 完整源码下载地址 [https://github.com/MatrixSeven/JavaAOP](https://github.com/Matri ...

  9. Javascript 代理模式模拟一个文件同步功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. Redis初识01 (简介、安装、使用)

    一.Reids介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...

  2. day52——jquery引入与下载、标签查找、操作标签

    day52 jquery引入 下载链接:jQuery官网 https://jquery.com/ 中文文档:jQuery AP中文文档 http://jquery.cuishifeng.cn/ < ...

  3. 深度学习-DCGAN论文的理解笔记

    训练方法DCGAN 的训练方法跟GAN 是一样的,分为以下三步: (1)for k steps:训练D 让式子[logD(x) + log(1 - D(G(z)) (G keeps still)]的值 ...

  4. gym101480

    A. ASCII Addition 模拟 #include <iostream> #include <sstream> #include <algorithm> # ...

  5. jupyter notebook在 mac 使用

    1. 查看当前 conda 所拥有的环境列表 conda env list 2. 选择要进入的环境 source activate your_env_name 3. 启动 jupyter jupyte ...

  6. MySql5.7 json查询

    create table t1(name json); insert into t1 values(’ { “hello”: “song”, “num”: 111, “obj”: { “who”: “ ...

  7. Kafka理解

    1. 引言 最近使用Kafka做消息队列时,完成了基本的消息发送与接收,已上线运行.一方面防止出现Bug时自己不能及时定位问题,一方面网上的配置可能还可以更加优化,决定去了解下Kafka. 2. 配置 ...

  8. SpringBoot整合freemarker 引用基础

    原 ElasticSearch学习笔记Ⅲ - SpringBoot整合ES 新建一个SpringBoot项目.添加es的maven坐标如下: <dependency> <groupI ...

  9. Entity framework Core 数据库迁移

    本文转自https://www.cnblogs.com/zmaiwxl/p/9454177.html 初始化数据库 1.添加初始迁移 Add-Migration init 向“迁移”目录下的项目添加以 ...

  10. RSA加密&解密【Java&Scala】

    一.简介 RSA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用. RSA公开密钥密码体制.所谓公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解 ...