- 博客(36)
- 收藏
- 关注
原创 scarpy使用遇到的坑,总结
除了抓取第一页外,抓取第2,3等下一页参考:Python + Scrapy 抓取豆瓣电影 top 250 http://www.jianshu.com/p/62e0a588ee0d # 翻页 next_page = response.xpath('//span[@class="next"]/a/@href') if next_page: url = respons
2017-02-11 10:37:48
1942
原创 解决Requests中文乱码
都在推荐用Requests库,而不是Urllib,但是读取网页的时候中文会出现乱码。分析: r = requests.get(“http://www.baidu.com“) **r.text返回的是Unicode型的数据。 使用r.content返回的是bytes型的数据。 也就是说,如果你想取文本,可以通过r.text。 如果想取图片,文件,则可以通过r.content。**获取一
2017-02-06 09:37:19
87536
8
原创 lxml解析html时,检验XPath
这两天在研究Scrapy,在遇到用Xpath提出时,需要有Chrome的XPath helper,但老是出现错误。废话少说,还是先把测试网页保存到本地,逐步的测试提取。测试文本text.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>测试-常规方法</title></head><b
2017-02-05 20:29:52
5196
转载 常用正则表达式爬取网页信息及分析HTML标签总结
见链接 https://yq.aliyun.com/articles/26026摘要: 这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法。它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬虫、BeautifulSoup分析网页DOM节点,这就更方便了,但本文更多的是介绍基于正则的底层爬取分析。
2017-02-05 09:33:03
10286
原创 网络爬虫:Requests+lxml
目标:百度百科Python词条相关网页—标题和简介 入口页:http://baike.baidu.com/view/21087.htm
2017-02-04 08:32:48
6402
2
原创 Python2自动转Python3
cmd中E:\Program Files\Anaconda3\Tools\scripts>python 2to3.py -w "E:\Python Program\b.py"因为cmd中E:\Python Program\b.py不识别长语句,会将E:\Python与Program\b.py拆开,因此需要加“”。在pycharm中 配置步骤第一步: pyCharm菜单栏–>「File」–>「S
2017-01-28 22:07:05
1044
原创 网络爬虫:各种模板
运行BeautifulSoupimport urllib.requestimport urllib.errorfrom bs4 import BeautifulSoupdef get_title(url): try: req=urllib.request.Request(url) response=urllib.request.urlopen(req)
2017-01-26 18:08:30
5949
原创 网络爬虫:淘女郎
#_*_ coding:utf-8 _*_import urllib.requestfrom bs4 import BeautifulSoupimport osimport refrom selenium import webdriverclass Spider: #页面初始化 def __init__(self): self.siteURL = "http
2017-01-26 17:56:04
629
原创 python selenium环境配置Firefox和Chrome
1、下载Selenium库,可以使用pip install selenium https://pypi.python.org/pypi/selenium/ 2、下载驱动 Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads Firefox: https://github.com/mozilla/ge
2017-01-24 15:40:07
15227
原创 网络爬虫:BeautifulSoup
以获取网页的title为例基础模板# -*- coding: utf-8 -*-import urllib.requestimport urllib.errorfrom bs4 import BeautifulSoupdef get_title(url): req=urllib.request.Request(url) response=urllib.request.urlope
2017-01-21 17:18:25
837
原创 网络爬虫:百度百科
爬百度百科的词条编写一个爬虫,爬百度百科“网络爬虫”的词条(链接:http://baike.baidu.com/view/284853.htm),将所有包含“view”的链接按下边格式打印出来。锁定 –> http://baike.baidu.com/view/10812319.htm 网络爬虫 –> http://baike.baidu.com/view/284853.htm 蜘蛛 –> ht
2017-01-19 16:04:08
2122
1
原创 使用http.cookiejar生产Cookie模拟用户登陆
# -*- coding: utf-8 -*-import reimport urllib.parseimport urllib.requestfrom http.cookiejar import CookieJar#豆瓣的登录urlloginurl = "https://www.douban.com/accounts/login"cookie = CookieJar()opener =
2017-01-18 14:39:10
3767
3
原创 网络爬虫:利用有道实现“语言翻译”功能
代码如下:import urllib.requestimport urllib.parseimport jsondef main(): while True: content=input("请输入需要翻译的内容(退出输入q):") if content in ("Q","q","quit"): break else:
2017-01-18 09:44:13
5594
4
原创 网络爬虫:识别网站编码,然后转码,然后写入txt文档
读取一个网页信息时,需要了解编码格式,然后进行解码。推荐使用chardet包中detect()函数import urllib.requestresponse=urllib.request.urlopen("http://baidu.com").read()import chardetprint ("该网页使用的编码是:%s" %(chardet.detect(response)))该网页使用的
2017-01-17 10:49:33
3001
转载 __getattr__和__getattribute__的区别
getattr(self, item)定义当用户试图获取一个不存在的属性的行为 getattribute(self, item)定义该类的属性被访问时的行为因为,计算机肯定先访问存在的属性,如果没有再访问不存在的属性,即先访问getattribute(self, item),再访问getattr(self, item)举例1:class Demo: def __getattr__(self
2017-01-15 09:18:37
1387
1
转载 魔法方法:属性访问
需求: 1. 写一个矩形类,默认有宽和高两个属性; 2. 如果为一个叫square的属性赋值,那么说明这是一个正方形,值就是正方形的边长,此时宽和高都应该等于边长。# -*- coding: utf-8 -*-class Rectangle: def __init__(self,length=0, width=0): self.length=length
2017-01-15 08:28:21
477
转载 类组合
需求:要求定义一个类,叫水池,水池里要有乌龟和鱼。 注意:水池与(乌龟和鱼)没有继承关系,顾不能用super()class Turtle: def __init__(self,x): self.num=xclass Fish: def __init__(self,x): self.num=xclass Pool: def __init__(s
2017-01-05 22:00:51
408
原创 子类屏蔽父类的方法
需求: 假设已经有鸟类的定义,现在我们定义鸵鸟继承了鸟类的属性。但是鸟类有会飞的方法,鸵鸟是不会飞的。那么鸵鸟类中应该如何屏蔽鸟类中会飞的方法呢?# -*- coding: utf-8 -*-class Bird: def fly(self): print("I belive I can fly!")class Ostrich(Bird): def fly(self
2017-01-05 17:38:10
5380
原创 定义一个游乐园门票的类
要求:按照以下要求定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价。 (1)平日票价100元 (2)周末票价为平日的120% (3)儿童半票。# -*- coding: utf-8 -*-class Ticket: def __init__(self,time,adult_number,child_number): self.time=time
2017-01-05 15:44:22
5847
转载 easygui系列之-打开文件显示内容
需求:提供一个文件夹浏览框,用户打开某个文件后,显示文件的内容。代码如下:# -*- coding: utf-8 -*-import easygui as gimport osfile_path=g.fileopenbox(default="*.txt")with open(file_path) as f: msg="文件【%s】的内容如下:" %os.path.basename(file
2017-01-04 20:14:50
4458
原创 Pycharm和Anaconda中如何安装package
为了方便,我安装了Anaconda3,集成了许多包。安装新包可以通过如下方式: File–>Settings–>Project: Python Program–>Program Interpreter–>”+”–>search package–>install Package但是有时候,search找不到需要的包,就需要手动下载。以easygui为例,讲解如何安装: 1、http://easyg
2017-01-04 11:28:41
28485
原创 使用with...as....语法打开一个文件
当使用open()打开一个不存在的文件时。最后通过finally关闭文件会报错# -*- coding: utf-8 -*-try: f=open("dataaaa.txt","w") for each_line in f: print (each_line)except OSError as reason: print("出错了:"+str(reason)
2017-01-03 22:58:22
2733
原创 求一个数的最大公约数
# -*- coding: utf-8 -*-def showMaxFactor(number): count=number//2 while count>1: if number%count==0: print("%d的最大公约数为%d" %(number,count)) break count-=1
2017-01-03 22:40:26
768
转载 尝试一个新的函数int_input(),当用户输入整数的时候返回正常,否则提示出错并要求重新输入。
# -*- coding: utf-8 -*-def int_input(prompt=""): while True: try: int(input(prompt)) break except ValueError: print ("出错,您输入的不是整数!")int_input("请输
2017-01-03 21:45:20
4168
原创 猜数字小游戏
需求:写一个猜数字的小游戏# -*- coding: utf-8 -*-import randomsecret = random.randint(1,10)print("~~欢迎进入猜猜猜小游戏~~")guess = int(input("不妨猜一下我现在心里想的是哪个数字:"))while True: if guess == secret: print("哎呦,不错呦,
2017-01-03 20:32:57
673
转载 Pickle谈话内容(conversations)按角色(role)不同存入文本
将上课demo中的谈话内容(conversations)按角色(role)的不同,分别存入两个文本文件中man = [] #分别定义两个list 用来存储两个role的conversationsother = []try: data = open('sketch.txt') try: for each_line in data: (role,
2017-01-03 18:07:51
547
原创 关于os的一系列问题:寻找目录中的视频文件,并存储路径
需求:编写一个程序,用户输入开始搜索的路径,查找该路径下(包含子文件夹内)所有的视频格式文件(要求查找MP4、rmvb、avi的格式即可),并创建一个文件(videoList.txt)存放所有找到的文件的路径。# -*- coding: utf-8 -*-import osdef search_file(start_dir): os.chdir(start_dir) #os.chdir()
2017-01-03 15:07:46
906
转载 关于os的一系列问题:计算当前文件夹下所有文件的大小
需求:编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在。如果遇到文件夹,则进入文件夹继续搜索。 程序实现如下: 请输入待查找的初始目录:E:\Python Program 请输入需要查找的目标文件:donelli.jpg E:\Python Program\neural_artistic_style-master\images\donelli.jpgtips:如果遇到文件夹
2017-01-03 14:27:27
510
转载 关于os的一系列问题:计算当前文件夹下所有文件的大小
需求:计算当前文件夹下所有文件的大小tips:使用os.path.getsize()函数,参数是文件的路径。# -*- coding: utf-8 -*-import osprint (os.getcwd())all_files=os.listdir(os.curdir)file_dict=dict()for each_file in all_files: if os.path.isfil
2017-01-03 11:54:07
547
转载 关于os的一系列问题:统计当前目录下每个文件类型的文件数
需求: 统计当前目录下不同类型的文件的个数 E:\Python Program 该文件夹下共有【.txt】的文件11个 该文件夹下共有【.mp3】的文件1个 该文件夹下共有【.py】的文件19个 该文件夹下共有【文件夹】的文件4个 该文件夹下共有【.bak】的文件1个 该文件夹下共有【.pkl】的文件1个# -*- coding: utf-8 -*-import osprint (o
2017-01-03 11:37:14
1250
原创 读取文件,打印制定的行
需求:用户可以随意输入需要显示的行数。比如输入13:21,则打印第13行到21行;输入:21,则打印前21行;输入21:,则打印从第21行到文件末尾所有内容;输入:,则打印整个文档。自己写的繁琐的代码:# -*- coding: utf-8 -*-def file_show(file_name,start_number,end_number): if start_number!=0 and
2017-01-03 09:07:10
548
原创 Python 统计文件行数
如何统计读取的一个txt文本的行数呢?最简单的办法是把文件读入一个大的列表中,然后统计列表的长度。如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了:count = len(open(filepath,'rU').readlines())如果是非常大的文件,上面的方法可能很慢,甚至失效.此时,可以使用循环来处理:count = -1for count
2017-01-03 08:47:53
35068
原创 建立通讯录的程序(用字典)
print (""" |---欢迎进入通讯录程序---| |---1:查询联系人资料---| |---2:插入新的联系人---| |---3:删除已有联系人---| |---4:退出通讯录程序---|""")dict = {}while True: number=int(input("请输入相关的指令代码:"
2017-01-01 10:32:07
1988
原创 python按行读取文件 去掉换行符"\n" (查眼力,比较文档的不同)
file1=input("请输入需要打开的文件名:")+".txt"f1=open(file1,"r")for line1 in f1.readlines(): line1=line1.strip("\n") print (line1)扩展:比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置。def file_compare(file1,file2):
2017-01-01 10:31:04
14907
1
原创 python将回车作为输入内容
当input输入内容的时候,许多情况下输入回车键另起一行输入,但是这时候Pycharm就执行程序,然后结束,导致无法继续输入内容。原因:Python默认遇到回车的时候,输入结束。所以我们需要更改这个提示符,在遇到其他字符的时候,输入才结束。比如有一道题:
2017-01-01 07:56:14
54051
5
原创 以写模式打开一个文件
以写模式打开一个文件代码如下: “` pythonf1 = open(‘OpenMe.mp3’) f2 = open(‘OpenMe.txt’, ‘x’) # 使用”x”打开更安全 f2.write(f1.read()) f2.close() f1.close() 这里write写入的数据需要是str格式,如果是list[]就出现问题。当然可以通过“ “.join(lis
2016-12-31 10:41:13
1290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人