find函数


基于Scrapy框架爬取厦门房价

↘锁芯ラ 提交于 2019-12-08 21:26:19
本文的运行环境是Win10,IDE是Pycharm,Python版本是3.6。 请先保证自己安装好Pycharm和Scrapy。 爬取的网站是国内著名的房天下网,网址: http://esf.xm.fang.com/ ,网站界面如下图所示。 网站列表界面.png 网站详情界面.png 可以看出该网站信息较为全面。 用Scrapy的Shell测试该网站是否能爬取。 方法是在任意位置打开cmd或者PowerShell,输入命令 scrapy shell "esf.xm.fang.com" , 一般来说不会出现错误,如果报错 ImportError: DLL load failed: 操作系统无法运行 %1。 ,解决方法是 把C:\Windows\System32目录下的libeay32.dll和ssleay32.dll删除即可 。 确定命令正确后运行,结果如下图。 测试能否爬取1.png 在 In[1]: 后输入命令 view(response) ,确认命令正确后运行,会自动弹出浏览器窗口,如果出现如下图所示网站,则表示scrapy可以顺利从网站获取信息,即可以完成爬虫任务。 测试能够爬取2.png 从上图看出运行命令后打开的是本地的网站,即网站内容可以顺利从服务器缓存到本地。 在你的工程文件中按住Shit,鼠标右击呼唤出下图所示菜单。 选择下图所标识的

Python进阶-Ⅸ 递归 二分法

烈酒焚心 提交于 2019-12-06 10:54:52
1、算法 英文名:algorithm,就是计算的方法。# 是截止到目前,人类发现的针对特定场景的,最优的计算方法。是人类智慧的结晶。# 人脑是复杂的,电脑其实很简单。比如:999 * 123 人类会将其变为: 1000 * 123 - 123 这样就好算多了,可是电脑不会如此,只会硬算! 学习算法的目的# 我们学习的算法 都是过去时# 了解基础的算法 才能创造出更好的算法# 不是所有的事情都能套用现成的方法解决的# 有些时候会用到学过的算法知识来解决新的问题 2、递归 1)、楔子 有如下例子:从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天,老和尚跟小和尚讲故事:"从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天,老和尚跟小和尚讲故事:'从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天,老和尚跟小和尚讲故事:............................. # 看到这个例子,有何感想?这不是车轱辘话码,自己说自己!# 这就对了,我们就正式引入递归! 2)、递归函数的定义 在函数中,自己调用自己的函数,叫递归函数。 1 depth = 0 2 def temple_story(): 3 global depth 4 print('从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天

python爬虫--数据解析

一个人想着一个人 提交于 2019-12-06 10:27:58
数据解析 什么是数据解析及作用 概念:就是将一组数据中的局部数据进行提取 作用:来实现聚焦爬虫 数据解析的通用原理 标签定位 取文本或者属性 正则解析 正则回顾 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字、字母、下划线、中文 \W : 非\w \s :所有的空白字符包,括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 \S : 非空白 数量修饰: * : 任意多次 >=0 + : 至少1次 >=1 ? : 可有可无 0次或者1次 {m} :固定m次 hello{3,} {m,} :至少m次 {m,n} :m-n次 边界: $ : 以某某结尾 ^ : 以某某开头 分组: (ab) 贪婪模式: .* 非贪婪(惰性)模式: .*? re.I : 忽略大小写 re.M :多行匹配 re.S :单行匹配 re.sub(正则表达式, 替换内容, 字符串) 正则练习 import re #提取出python key="javapythonc++php" res = re.findall('python',key)[0] #re.findall('python',key)返回的结果是列表类型的数据 print(res) #提取出hello world key="<html>

BeautifuSoup实用方法属性总结

混江龙づ霸主 提交于 2019-12-05 17:40:47
一、对象 Beautifulsoup中有4个重要的对象: Tag,标签,可以获取标签文本,属性 BeautifulSoup,继承自Tag,所以Tag的方法它基本都能用 NavigableString,文本字符串 Comment,注释 二、创建BeautifulSoup对象 2.1 通过字符串创建 from bs4 import BeautifulSoup html = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="story">Once upon a time there were three little sisters; and their names were </p> """ soup = BeautifulSoup(html, 'html.parser') print(soup.prettify()) 2.2 通过文件创建 from bs4 import BeautifulSoup with open(r"F:\tmp\etree.html") as fp: soup = BeautifulSoup(fp,"lxml") print(soup.prettify()) 三、Tag关系属性 关系 说明 parent 父节点 parents 祖先节点 next

STL 简介,标准模板库

匆匆过客 提交于 2019-12-04 12:53:19
这篇文章是关于C++语言的一个新的扩展——标准模板库的(Standard Template Library),也叫STL。 当我第一次打算写一篇关于STL的文章的时候,我不得不承认我当时低估了这个话题的深度和广度。有很多内容要含盖,也有很多详细描述STL的书。因此我重新考虑了一下我原来的想法。我为什么要写这篇文章,又为什么要投稿呢?这会有什麽用呢?有再来一篇关于STL的文章的必要吗? 当我翻开Musser and Saini的页时,我看到了编程时代在我面前消融。我能看到深夜消失了, 目标软件工程出现了。我看到了可维护的代码。一年过去了,我使用STL写的软件仍然很容易维护。 让人吃惊的是其他人可以没有我而维护的很好! 然而,我也记得在一开始的时候很难弄懂那些技术术语。一次,我买了Musser&Saini,每件事都依次出现,但是在那以前我最渴望得到的东西是一些好的例子。 当我开始的时候,作为C++一部分的Stroustrup还没出来,它覆盖了STL。 因此我想写一篇关于一个STL程序员的真实生活的文章可能会有用。如果我手上有一些好的例子的话,特别是象这样的新题目,我会学的更快。 另外一件事是STL应该很好用。因此,理论上说,我们应该可以马上开始使用STL。 什麽是STL呢?STL就是Standard Template Library,标准模板库

jquery中filter()和find()函数区别

天大地大妈咪最大 提交于 2019-12-04 09:24:24
通常把这两个函数,filter()函数和find()函数称为筛选器。 下面的例子分别使用filter函数和find函数对一组列表进行筛选操作。 一组列表: 1 <li>1</li> 2 <li class="f">2</li> 3 <li><a>3</a></li> 4 <li>4</li> 5 <li>5</li> filter()函数 1 $('li').filter('.f').addClass('filter'); find()函数 1 $('li').find('a').addClass('find'); 完整的html代码: 1 <html> 2 <head> 3 <title>filter和find函数</title> 4 <script src="jquery.js"></script> 5 </head> 6 <body> 7 <li>1</li> 8 <li class="f">2</li> 9 <li><a>3</a></li> 10 <li>4</li> 11 <li>5</li> 12 </body> 13 <script> 14 $('li').filter('.f').addClass('filter'); 15 $('li').find('a').addClass('find'); 16 </script> 17 </html>

Python爬虫学习纪要(二):BeautifulSoup相关知识点2

房东的猫 提交于 2019-12-04 05:29:18
三、树的搜索: 1)find_all(name, attrs, recursive, string, limit, **kwargs): 该方法将搜索当前Tag对象的所有子节点,并且按照过滤条件得到筛选后对象的列表。 name参数 : 1.1、传字符串: # print(soup.findAll('a')) 1.2、传正则表达式: # import re for tag in soup.findAll(re.compile('^b')): print(tag.name) 1.3、传列表: # soup.findAll(['a', 'b']) 1.4、传True:(注:True参数将匹配文档中所有的节点,但是不包括文本字符串) # for tag in soup.findAll(True): print(tag.name) 1.5、传入函数:(注:可以根据函数返回值的True/False来得到匹配的节点) # def has_class_but_no_id(tag): return tag.has_attr('class') and not tag.has_attr('id') # soup.findAll(has_class_but_no_id) 关键字参数 : 可以传入一个或者多个关键字,BeautifulSoup会搜索当前Tag下的每一个节点的该关键字及其对应的值。 #

selenium8中元素定位方式

核能气质少年 提交于 2019-12-04 01:59:56
Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素才能进行后续的自动化控制,我在这里将对各种元素定位方式进行总结归纳一下。 这里将统一使用百度首页(www.baidu.com)进行示例,f12可以查看具体前端代码。 WebDriver8种基本元素定位方式 find_element_by_id() 采用id属性进行定位。例如在百度页面中输入关键字 Selenium 进行搜索。百度部分关键源码如下: <span class="bg s_ipt_wr quickdelete-wrap"> <span class="soutu-btn"></span> <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd"> <a id="quickdelete" class="quickdelete" href="javascript:;" title="清空" style="top: 0px; right: 0px; display: none;"></a> </span> <span class="bg s_btn_wr"> <input id="su" class="bg s_btn" type="submit" value=

C++ STL——常用算法

浪子不回头ぞ 提交于 2019-12-03 09:41:33
目录 一 常用查找算法 二 常用遍历算法 注:原创不易,转载请务必注明原作者和出处,感谢支持! 注:内容来自某培训课程,不一定完全正确! 一 常用查找算法 /* find算法 查找元素 @param beg 容器开始迭代器 @param end 容器结束迭代器 @param val 查找的元素 @return 返回查找元素的位置 */ find(iterator beg, iterator end, val); /* adjacent_find算法 查找相邻重复元素 @param beg 容器开始迭代器 @param end 容器结束迭代器 @param _callback回调函数或者谓词(返回bool类型的函数对象) @return 返回相邻元素的第一个位置的迭代器 */ adjacent_find(iterator beg, iterator end, _callback); /* binary_search算法 二分查找算法 注意:在无序序列中不可用 @param beg 容器开始迭代器 @param end 容器结束迭代器 @param val 查找的元素 @return 找到返回true,否则返回false */ bool binary_search(iterator beg, iterator end, val); /* find_if算法 条件查找 @param

字符串搜索 find()

匿名 (未验证) 提交于 2019-12-03 00:34:01
参考 《C++ Primer Plus》中文版 P870 #include <map> #include <fstream> #include <iostream> #include < string > using namespace std; string getData( string key, map< string , string > & data ); // using namespace std; int main( int argc, char ** argv ) { map < string , string > data; string filename = " ./parameters.txt " ; ifstream fin( filename.c_str() ); /* c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。 */ if (!fin) // 文件不存在 { cerr << " parameter file does not exist. " <<endl; // 报错 return 0 ; } while (!fin.eof()) // 文件是否为空 {

工具导航Map