爬虫的基本概念及BeautifulSoup的基本使用
2017-08-11 17:22
507 查看
第一部分 侵入
Cookie登录信息使用、异常处理参考:http://www.cnblogs.com/junrong624/p/5533655.html
网站防盗链
在HTTP协议中 头信息中有一个很重要的选项 referer
referer 表示的是网页的来源以及上一页的地址
如果直接在浏览器输入地址,进入网站,则没有referer头信息
所以,服务器可根据referer来知道用户从哪个网站进来的和图片是从哪个网站进来的
如果是通过本站访问的图片是可以正常访问的,否则图片不能正常访问。
参考:
http://blog.csdn.net/xiao_tommy/article/details/53186201
反爬虫
假如一个网站它会某一段时间某个IP 的访问次数,如果访问次数过多,它会禁止你的访问。所以你可以设置一些来帮助你做工作,每隔一段时间换一个代理。
第二部分 解析(Python的爬虫框架Beautifulsoup的使用)
对象的种类Tag标签
NevigableString节点内容
BeautifulSoup文档对象,特殊的tag
Comment处理注释内容
遍历文档树:
直接子节点
.contents返回数组,可用通过.contents[0]获取元素
.children返回迭代器,可用通过循环遍历出元素
所有子孙节点
.descendants
返回迭代器,循环遍历输出;同时会遍历到节点内容。
节点内容
.string
多个内容
.strings
.stripped_strings
父节点
.parent
全部父节点
.parents
兄弟节点
.next_sibling .previous_sibling
全部兄弟节点
.next_siblings .previous_siblings
前后节点
.next_element .previous_element
所有前后节点
.next_elements .previous_elements
搜索文档树
find_all( name , attrs , recursive , text , **kwargs )
– name参数,可以传字符串、正则表达式、列表、方法、true
常用soup. find_all(‘b’)查询b标签
– Keyword参数,根据标签中的属性筛选;
常用soup.find_all(“a”, class_=”sister”)
– text 参数,搜索文档中相匹配的字符串。
常用soup.find_all(text=”Elsie”)
– limit 参数,限制记录条数。
soup.find_all(“a”, limit=2)
– recursive 参数,find_all会返回所有子孙节点,如果只返回子节点的结果,则
recursive=False
find( name , attrs , recursive , text , **kwargs )
它与 find_all() 方法唯一的区别是 find_all() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果
find_parents() find_parent()
find_all() 和 find() 只搜索当前节点的所有子节点,孙子节点等. find_parents() 和 find_parent() 用来搜索当前节点的父辈节点,搜索方法与普通tag的搜索方法相同,搜索文档搜索文档包含的内容
find_next_siblings() find_next_sibling()
这2个方法通过 .next_siblings 属性对当 tag 的所有后面解析的兄弟 tag 节点进行迭代, find_next_siblings() 方法返回所有符合条件的后面的兄弟节点,find_next_sibling() 只返回符合条件的后面的第一个tag节点
find_previous_siblings() find_previous_sibling()
这2个方法通过 .previous_siblings 属性对当前 tag 的前面解析的兄弟 tag 节点进行迭代, find_previous_siblings() 方法返回所有符合条件的前面的兄弟节点, find_previous_sibling() 方法返回第一个符合条件的前面的兄弟节点
find_all_next() find_next()
这2个方法通过 .next_elements 属性对当前 tag 的之后的 tag 和字符串进行迭代, find_all_next() 方法返回所有符合条件的节点, find_next() 方法返回第一个符合条件的节点
find_all_previous() 和 find_previous()
这2个方法通过 .previous_elements 属性对当前节点前面的 和字符串进行迭代, find_all_previous() 方法返回所有符合条件的节点, find_previous()方法返回第一个符合条件的节点
Css选择器
通过标签名查找
soup.select(‘title’)
通过类名查找
soup.select(‘.sister’)
通过 id 名查找
soup.select(‘#link1’)
组合查找(用空格分开)
soup.select(‘p #link1’)
属性查找
print soup.select(“head > title”)
print soup.select(‘a[href=”http://example.com/elsie”]’)
详细信息参考:
http://python.jobbole.com/81349/
相关文章推荐
- python爬虫由浅入深3--BeautifulSoup的使用的基本方法
- Python爬虫小实践:使用BeautifulSoup+Request爬取CSDN博客的个人基本信息
- Oracle DataBase单实例使用ASM案例(1)--ASM基本概念
- 【Objective-C】OC中KVO的基本概念和使用方法
- 【iOS7的一些总结】13、UIScrollView的概念和基本使用方法
- IOS学习笔记(八)之UIActivityIndicatorView(活动指示器视图)的基本概念和使用方法
- python3实现网络爬虫(4)--BeautifulSoup使用(3)
- k8s基本概念-如何使用Namespaces
- grafana使用教程之基本概念(basic concepts)
- Hive基础概念、安装部署与基本使用
- Fragment的概念与使用(一)--基本概念
- Bitmap基本概念及在Android4.4系统上使用BitmapFactory的注意事项
- VxWorks6.6 pcPentium BSP 使用说明(一):基本概念
- 索引的基本概念、分类、优点、使用
- 索引的基本概念、分类、优点、使用
- Java多线程(一)、多线程的基本概念和使用
- Python爬虫入门三之Urllib库的基本使用
- windows下学习nsq,以及基本使用概念
- VxWorks6.6 pcPentium BSP 使用说明(一):基本概念 分类: vxWorks 2014-06-28 08:28 565人阅读 评论(0) 收藏
- Python爬虫基本使用