python问题解答网站_爬虫常见问题与解答

--题目--

(1) 列举python网络爬虫所引用的模块包,提取数据用到的模块(至少各2个)

requests、urllib | jsonpath xpath beautifulsoup

(2)浏览器请求某网站时,从输入到页面显示出来,描述一下请求过程

1.敲域名回车

2.查询本地的DNS缓存,以找到域名对应的主机IP地址(若有,则跳到4)

3.查询远程域名根DNS,找到IP地址

4.向远程IP地址的服务器发送请求(若请求失败且未经过2,则返回2,若再再次失败,返回错误代码)

5.服务器响应请求,向用户发送数据

6.浏览器对返回的数据进行处理(浏览器渲染)

7.显示

(3) 爬虫在爬取数据,网站有反爬时如何解决

通过headers反爬虫:解决策略,伪造headers

基于用户行为反爬虫:动态变化去爬取数据,模拟普通用户的行为

基于动态页面的反爬虫:跟踪服务器发送的ajax请求,模拟ajax请求

(4) 如果爬数据时ip被封了,如何解决

1、放慢抓取速度,减小对于目标网站造成的压力。但是这样会减少单位时间类的抓取量。

2、第二种方法是通过设置代理IP等手段,突破反爬虫机制继续高频率抓取。需多个稳定的代理IP

(5)如何解决登录时有验证码的问题,列出你知道的状态码(至少3个)

一、筛选得到隐藏信息

进入开发者工具(按F12),找到其中的Network后,手动的先进行一次登录,找到其中的第一个请求,在Header的底部会有一个data的数据段,这个就是登录所需的信息。如果想对其中的隐藏信息进行修改先获取网页Html的内容

二、将信息进行提交

找到源码中提交表单所需要的action,和method使用

三、获取登录后的信息

信息提交后模拟登录就成功了,接下来就可以获取登录后的信息了,如果有验证码,则提取其中的cookie,请求时携带cookie访问。

状态码:

200 OK:请求成功

301 重定向所请求的页面已经转移至新的url。

403 Forbidden — 对被请求页面的访问被禁止

404 Not Found — 服务器无法找到被请求的页面

500 Internal Server Error — 请求未完成。服务器遇到不可预知的情况

504 Gateway Timeout — 网关超时

(6) 什么是进程 线程 协程

进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。

线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。

协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。

参考网址: https://blog.csdn.net/hairetz/article/details/16119911

(7)自动化测试工具用什么包,如何使用有什么功能

selenium+phantomJS 一个是自动化测试工具,一个是无界面的浏览器,他俩配合可以模拟一个用户

鼠标点击浏览器的动作,从而在其中获取到相应数据

(8) scrapy中的pipeline 有什么作用

pipeline(管道):它负责处理spider中获取item,并进行后期处理(如过滤,存储)

(9)模拟抓取某网站的第一页,输出匹配公告名字

要求:网址:baseurl,匹配:title

importurllib.requestimportredeffetch(baseUrl):#第1步:模拟浏览器发送请求

data = urllib.request.urlopen(baseUrl).read() #二进制字节形式

data = data.decode('utf-8')#第2步:页面返回后,利用正则表达式提取想要的内容

nameList=[]

nameList= re.compile(r'target="_blank" title="(.*?)"',re.S).search(data)#第3步:返回在页面上析取的“标题名”

returnnameList####### 执行 ########

if __name__ =="__main__":#要抓取的网页地址

url = "http://www.sxszbb.com/sxztb/jyxx/001001/MoreInfo.aspx?CategoryNum=001001"

#存放到名字列表中

NameList =fetch(url)#输出 NameList

Length =len(NameList)for i inrange(0, Length):print("标题名%d:%s\n"%(i+1, NameList[i]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值