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
解决Requests中文乱码 都在推荐用Requests库,而不是Urllib,但是读取网页的时候中文会出现乱码。分析: r = requests.get(“http://www.baidu.com“) **r.text返回的是Unicode型的数据。 使用r.content返回的是bytes型的数据。 也就是说,如果你想取文本,可以通过r.text。 如果想取图片,文件,则可以通过r.content。**获取一
lxml解析html时,检验XPath 这两天在研究Scrapy,在遇到用Xpath提出时,需要有Chrome的XPath helper,但老是出现错误。废话少说,还是先把测试网页保存到本地,逐步的测试提取。测试文本text.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>测试-常规方法</title></head><b
常用正则表达式爬取网页信息及分析HTML标签总结 见链接 https://yq.aliyun.com/articles/26026摘要: 这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法。它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬虫、BeautifulSoup分析网页DOM节点,这就更方便了,但本文更多的是介绍基于正则的底层爬取分析。
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
网络爬虫:各种模板 运行BeautifulSoupimport urllib.requestimport urllib.errorfrom bs4 import BeautifulSoupdef get_title(url): try: req=urllib.request.Request(url) response=urllib.request.urlopen(req)
网络爬虫:淘女郎 #_*_ coding:utf-8 _*_import urllib.requestfrom bs4 import BeautifulSoupimport osimport refrom selenium import webdriverclass Spider: #页面初始化 def __init__(self): self.siteURL = "http
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
网络爬虫: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
网络爬虫:抓取XXOO图片 基本程序# -*- coding: utf-8 -*-import urllib.requestimport urllib.parseimport osfrom bs4 import BeautifulSoupimport redef url_open(url): req=urllib.request.Request(url) req.add_header("User-Agen
网络爬虫:百度百科 爬百度百科的词条编写一个爬虫,爬百度百科“网络爬虫”的词条(链接:http://baike.baidu.com/view/284853.htm),将所有包含“view”的链接按下边格式打印出来。锁定 –> http://baike.baidu.com/view/10812319.htm 网络爬虫 –> http://baike.baidu.com/view/284853.htm 蜘蛛 –> ht
使用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 =
网络爬虫:利用有道实现“语言翻译”功能 代码如下:import urllib.requestimport urllib.parseimport jsondef main(): while True: content=input("请输入需要翻译的内容(退出输入q):") if content in ("Q","q","quit"): break else:
网络爬虫:识别网站编码,然后转码,然后写入txt文档 读取一个网页信息时,需要了解编码格式,然后进行解码。推荐使用chardet包中detect()函数import urllib.requestresponse=urllib.request.urlopen("http://baidu.com").read()import chardetprint ("该网页使用的编码是:%s" %(chardet.detect(response)))该网页使用的
__getattr__和__getattribute__的区别 getattr(self, item)定义当用户试图获取一个不存在的属性的行为 getattribute(self, item)定义该类的属性被访问时的行为因为,计算机肯定先访问存在的属性,如果没有再访问不存在的属性,即先访问getattribute(self, item),再访问getattr(self, item)举例1:class Demo: def __getattr__(self
魔法方法:属性访问 需求: 1. 写一个矩形类,默认有宽和高两个属性; 2. 如果为一个叫square的属性赋值,那么说明这是一个正方形,值就是正方形的边长,此时宽和高都应该等于边长。# -*- coding: utf-8 -*-class Rectangle: def __init__(self,length=0, width=0): self.length=length
类组合 需求:要求定义一个类,叫水池,水池里要有乌龟和鱼。 注意:水池与(乌龟和鱼)没有继承关系,顾不能用super()class Turtle: def __init__(self,x): self.num=xclass Fish: def __init__(self,x): self.num=xclass Pool: def __init__(s
子类屏蔽父类的方法 需求: 假设已经有鸟类的定义,现在我们定义鸵鸟继承了鸟类的属性。但是鸟类有会飞的方法,鸵鸟是不会飞的。那么鸵鸟类中应该如何屏蔽鸟类中会飞的方法呢?# -*- coding: utf-8 -*-class Bird: def fly(self): print("I belive I can fly!")class Ostrich(Bird): def fly(self
定义一个游乐园门票的类 要求:按照以下要求定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价。 (1)平日票价100元 (2)周末票价为平日的120% (3)儿童半票。# -*- coding: utf-8 -*-class Ticket: def __init__(self,time,adult_number,child_number): self.time=time
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
Pycharm和Anaconda中如何安装package 为了方便,我安装了Anaconda3,集成了许多包。安装新包可以通过如下方式: File–>Settings–>Project: Python Program–>Program Interpreter–>”+”–>search package–>install Package但是有时候,search找不到需要的包,就需要手动下载。以easygui为例,讲解如何安装: 1、http://easyg
使用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)
求一个数的最大公约数 # -*- coding: utf-8 -*-def showMaxFactor(number): count=number//2 while count>1: if number%count==0: print("%d的最大公约数为%d" %(number,count)) break count-=1
尝试一个新的函数int_input(),当用户输入整数的时候返回正常,否则提示出错并要求重新输入。 # -*- coding: utf-8 -*-def int_input(prompt=""): while True: try: int(input(prompt)) break except ValueError: print ("出错,您输入的不是整数!")int_input("请输
猜数字小游戏 需求:写一个猜数字的小游戏# -*- coding: utf-8 -*-import randomsecret = random.randint(1,10)print("~~欢迎进入猜猜猜小游戏~~")guess = int(input("不妨猜一下我现在心里想的是哪个数字:"))while True: if guess == secret: print("哎呦,不错呦,
Pickle谈话内容(conversations)按角色(role)不同存入文本 将上课demo中的谈话内容(conversations)按角色(role)的不同,分别存入两个文本文件中man = [] #分别定义两个list 用来存储两个role的conversationsother = []try: data = open('sketch.txt') try: for each_line in data: (role,
关于os的一系列问题:寻找目录中的视频文件,并存储路径 需求:编写一个程序,用户输入开始搜索的路径,查找该路径下(包含子文件夹内)所有的视频格式文件(要求查找MP4、rmvb、avi的格式即可),并创建一个文件(videoList.txt)存放所有找到的文件的路径。# -*- coding: utf-8 -*-import osdef search_file(start_dir): os.chdir(start_dir) #os.chdir()
关于os的一系列问题:计算当前文件夹下所有文件的大小 需求:编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在。如果遇到文件夹,则进入文件夹继续搜索。 程序实现如下: 请输入待查找的初始目录:E:\Python Program 请输入需要查找的目标文件:donelli.jpg E:\Python Programeural_artistic_style-master\images\donelli.jpgtips:如果遇到文件夹
关于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
关于os的一系列问题:统计当前目录下每个文件类型的文件数 需求: 统计当前目录下不同类型的文件的个数 E:\Python Program 该文件夹下共有【.txt】的文件11个 该文件夹下共有【.mp3】的文件1个 该文件夹下共有【.py】的文件19个 该文件夹下共有【文件夹】的文件4个 该文件夹下共有【.bak】的文件1个 该文件夹下共有【.pkl】的文件1个# -*- coding: utf-8 -*-import osprint (o
读取文件,打印制定的行 需求:用户可以随意输入需要显示的行数。比如输入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
Python 统计文件行数 如何统计读取的一个txt文本的行数呢?最简单的办法是把文件读入一个大的列表中,然后统计列表的长度。如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了:count = len(open(filepath,'rU').readlines())如果是非常大的文件,上面的方法可能很慢,甚至失效.此时,可以使用循环来处理:count = -1for count
建立通讯录的程序(用字典) print (""" |---欢迎进入通讯录程序---| |---1:查询联系人资料---| |---2:插入新的联系人---| |---3:删除已有联系人---| |---4:退出通讯录程序---|""")dict = {}while True: number=int(input("请输入相关的指令代码:"
python按行读取文件 去掉换行符"" (查眼力,比较文档的不同) file1=input("请输入需要打开的文件名:")+".txt"f1=open(file1,"r")for line1 in f1.readlines(): line1=line1.strip("") print (line1)扩展:比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置。def file_compare(file1,file2):
python将回车作为输入内容 当input输入内容的时候,许多情况下输入回车键另起一行输入,但是这时候Pycharm就执行程序,然后结束,导致无法继续输入内容。原因:Python默认遇到回车的时候,输入结束。所以我们需要更改这个提示符,在遇到其他字符的时候,输入才结束。比如有一道题:
以写模式打开一个文件 以写模式打开一个文件代码如下: “` pythonf1 = open(‘OpenMe.mp3’) f2 = open(‘OpenMe.txt’, ‘x’) # 使用”x”打开更安全 f2.write(f1.read()) f2.close() f1.close() 这里write写入的数据需要是str格式,如果是list[]就出现问题。当然可以通过“ “.join(lis