python面试中较常问及的知识点梳理---爬虫及正则部分

爬虫部分:

  1. 在 requests 模块中,requests.content 和 requests.text 什么区别
  2. 简要写一下 lxml 模块的使用方法框架
  3. 说一说 scrapy 的工作流程
  4. scrapy 的去重原理
  5. scrapy 中间件有几种类,你用过哪些中间件
  6. 你写爬虫的时候都遇到过什么?反爬虫措施,你是怎么解决的?
  7. 为什么会用到代理?
  8. 代理失效了怎么处理?
  9. 列出你知道 header 的内容以及信息
  10. 说一说打开浏览器访问 www.baidu.com 获取到结果,整个流程。
  11. 爬取速度过快出现了验证码怎么处理
  12. scrapy 和 scrapy-redis 有什么区别?为什么选择 redis 数据库?
  13. 分布式爬虫主要解决什么问题
  14. 写爬虫是用多进程好?还是多线程好? 为什么?
  15. 解析网页的解析器使用最多的是哪几个
  16. 需要登录的网页,如何解决同时限制 ip,cookie,session(其中有一些是动态生成的)在不使用动态爬取的情况下?
  17. 验证码的解决?
  18. 使用最多的数据库(mysql,mongodb,redis 等),对他的理解?

正则部分:

  1. 1)使用正则表达式匹配出www.baidu.com中的地址 2)a=“张明 98 分”,用 re.sub,将 98 替换为 100
  2. 正则表达式匹配中(.)和(.?)匹配区别?
  3. 写一段匹配邮箱的正则表达式

1 在 requests 模块中,requests.content 和 requests.text 什么区别
答:
.text返回的是Unicode型数据,如果想获取文本,就可以用.text方法
.content返回的是bytes型,也就是二进制数据,所以如果想获取图片,音视频,文件等,就可以用.content方法

2 简要写一下 lxml 模块的使用方法框架
答:

(例:)
from lxml import html
source='''
<div class="nam"><span>中国</span></div>
root=html.fromstring(source)
_content=root.xpath("string(//div[@class='nam'])")

if _content and isinstance(_content,list):
    content=_content[0] 
elif isinstance(_content,str):
    content=_content    
print(content)

lxml中主要有两部分,
[第一部分]
etree
主要可以用来解析XML字符串,
内部有两个对象,etree._ElementTree和etree._Element
etree.Element对象中包含的属性和方法:
属性:
1)tag,返回该节点的名称:

print 'root.tag'    输出tag

2)text,设置该节点的文本:

root.text = 'hello world'  输出hello world

3)tail,在标签后边追加文本:

root.tail = 'hym'   输出hello worldhym

方法:
1)Element(string),创建一个Element对象:

root = etree.Element('root')   
#返回一个XML的节点,名称root
`root = etree.Element('root', interesting='totally')`
#返回一个root节点,属性interesting = 'totally'

2)set(name,value),为已有的节点,添加属性

 root.set('hello', 'huhu')
 #增加一个属性hello = 'huhu'

3)get(string),返回属性值,

root.get('intersting')   返回‘totally’

4)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值