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. Word 去除文字底纹

    有时候从网页复制的文字有底纹,如何清除呢? 未完 ...... 点击访问原文(进入后根据右侧标签,快速定位到本文)

  2. IDEA debug断点调试技巧

    Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方 ...

  3. 【已解决】ArcMap的界面如何恢复默认设置

    解决方案:在C盘内搜索“Normal.mxt”,将它删除,然后重启ArcMap,即可.  效果图:

  4. 最全的 pip 使用指南,50% 你可能没用过

    所有的 Python 开发者都清楚,Python 之所以如此受欢迎,能够在众多高级语言中,脱颖而出,除了语法简单,上手容易之外,更多还要归功于 Python 生态的完备,有数以万计的 Python 爱 ...

  5. 神奇的外部嵌套(使用ROW_NUMBER()查询带条件的时候提示列名无效)

    declare @pageIndex int -- 第几页 declare @pageSize int -- 每页包含的记录数 --这里注意一下,不能直接把变量放在这里,要用select select ...

  6. business from English bisynes

    business from English bisynes Etymology From Middle English bisynes Hyphenation: business Noun busin ...

  7. MySQL CentOS7 手动安装

    手动安装MySQL的目的: 1.一个服务器上可以同时装多个版本,甚至相同版本MySQL的多个实例,这种需求很常见: 2.一次初始化和配置后,可以快速复制到本服务器或其他服务器,及封装为初始MySQL的 ...

  8. OC中并发编程的相关API和面临的挑战

    OC中并发编程的相关API和面临的挑战(1) 小引 http://www.objc.io/站点主要以杂志的形式,深入挖掘在OC中的最佳编程实践和高级技术,每个月探讨一个主题,每个主题都会有几篇相关的文 ...

  9. suoermap的object.net循环遍历属性表,从数据库取数据进行更新属性字段值

    /// </summary> /// <param name="sName">图层名</param> /// <param name=&q ...

  10. Pycharm中连接数据库乱码问题解决

    当我们使用pycharm建立数据库之后,看到里面的数据都是乱码,就像下面一样: 其实这个并不是pycharm的显示问题,而是建立数据库时产生的. 解决方法是到指定字符集的命令提示符中重新建表并指定字符 ...