51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

楼主: lsekfe
打印 上一主题 下一主题

【你来问我来答第109期】:python爬虫的魔力 !(已结束)

[复制链接]

该用户从未签到

1#
发表于 2019-12-2 20:39:11 | 显示全部楼层
交感2019 发表于 2019-12-2 18:22
老师请问,有许多爬虫现在在窃取个人信息,国家也在出台相关法律。爬虫技术有没有什么重要的法律红线?

你这是个好问题,最近爬虫行业各种动荡,但是大家大可不必担忧,受到打击的只是不合规的那些,主要是涉及到个人信息方面的。
爬虫只是一种工具,搜索引擎的底层就是爬虫和搜索,所以爬虫不是违法的,主要看怎么用。
一个很重要的注意点,就是不要涉及个人信息,还有规避有明确版权的数据。
详情可以看我的课程,在爬虫基本概念和就业指导章节我都着重进行了讲解,我的个人博客中也进行了讲解。
课程:http://www.atstudy.com/my/course/1999
博客:对于最近爬虫行业一些动荡事件的思考,http://www.crawler.im/post/18
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2019-12-4 11:03:01 | 显示全部楼层
目标,远方 发表于 2019-12-3 13:50
老师,请问,可以推荐一下,爬虫的基础框架不,在自学。感觉很多时候,找不到方向。

#框架:
PHP:
  PHPSpider:强大极其灵活,配置形式,基本上可以用配置解决所有问题

.NET:
  DotnetSpider:参照WebMagic,强大,灵活

Python:
  Scrapy:元老级别,强大,周边插件强大,应用广。但是也有不足(单进程只能运行单个爬虫任务),常用的的redis插件有缺陷
  PySpider:玩具,适合非专业爬虫人员,不稳定

Java:
  Nutch:元老级,适合搜索引擎,比较繁重,可定制化不强,不推荐
  WebMagic:参照Scrapy,但是青出于蓝而胜于蓝。强大,灵活,原生支持分布式,自带的redis队列很不错,可以实现单进程多任务,强烈推荐!!!!!
  Crawler4j:不错的框架,采用的是BerkeleyDB 进行url的过滤。不支持分布式采集,但是可以通过使用redis队列实现分布式,但是开源的redis队列有缺陷,慎用!
  WebCollector:国人开发,功能不错,但是不同版本兼容性不好,可修改空间不大

这些在老师的课程中都有详细的讲解和案例:http://www.atstudy.com/my/course/1999
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2019-12-16 14:15:02 | 显示全部楼层
df_1989 发表于 2019-12-13 16:56
老师,我想提问下,python爬虫可以用.net的界面来交互吗?

可以的,通过http接口或者数据库或者配置文件,然后爬虫中读取数据库或者配置
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2019-12-16 14:16:43 | 显示全部楼层
star78 发表于 2019-12-13 17:09
增加了IP地址池,IP地址数据如下(购买的IP数据):
结果页面有报错:接口返回值为403

Cookie要经常更换,一般多线程多账号,代理也有时效性,还有就是你的代理数量比较少,一般都是几百的级别
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2019-12-16 14:18:58 | 显示全部楼层
star78 发表于 2019-12-13 17:04
求指教!! 爬取天眼查数据的时候,脚本运行一段时间,就会被天眼查的反爬取搞出来。怎么能躲过这个检测 ...

一般是多种策略,检测ip,检测cookie,检测时间间隔,所以要有有效的代理池,并且经常更换的,还有就是单个线程的时间间隔控制好,cookie也不要一直用一个,经常更换或者动态生成。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2019-12-17 20:54:23 | 显示全部楼层
寻知觅音 发表于 2019-12-17 10:11
你好,想问下写爬虫是用多进程好?还是多线程好? 为什么?

一般是多线程,因为爬虫是IO比较多的,对CPU耗费不多,所以多线程能提高效率,节省资源。但是有的语言不支持多线程,那就多进程了,比如PHP
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2019-12-17 20:58:09 | 显示全部楼层
df_1989 发表于 2019-12-16 15:43
好的 谢谢老师。请问下您这边有相关的资料吗?

这个没有通用的方案,因为不同语言调用会比较麻烦,所以选用中间介质实现交互,比如数据库和文件,各种语言里都有读写文件和数据库的类库,按照自己的习惯使用就可以
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2019-12-17 21:03:35 | 显示全部楼层
monkeytest15 发表于 2019-12-16 16:00
在编写静态网页爬虫,检查元素时发现在标签里面href所指的链接不全怎么办
实际的网页url时这样的http://ww ...

这个是相对路径,可以自己拼接,也可以用现成的类库。
1.python方法:

from urllib import parse
absurl="http://www.XXXX.com/XX/XXX/XXX.html"
url="../../XX.html"
url=parse.urljoin(absurl, url)
2.java方法

absurl="http://www.XXXX.com/XX/XXX/XXX.html"
tempurl="../../XX.html"

url absurl=new url(absurl);

url tempurl=new url(absurl,tempurl);
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2019-12-17 21:05:35 | 显示全部楼层
小小云 发表于 2019-12-16 16:05
领导说要做个爬虫来获取信息,要求给的很笼统,主要就是获取最新及时不定向的数据,并且还是动态的,这个需 ...

首先,要做成通用型爬虫,尽量多封装,其次要及时更新,那么要理清楚详情页和列表页的概念,列表页多爬取,就能及时更新,同时又涉及到链接去重,所以列表页在某些情况下要清空队列,或者强制插入
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2019-12-17 21:07:18 | 显示全部楼层
黑色流星 发表于 2019-12-17 10:14
请问有大神写过爬虫方面的测试用例吗
我们是一个外贸电子商务网站,现在正在做一个比价系统,需要用爬虫 ...

爬虫一般写测试不多,因为存在不稳定性和不确定性。不过可以根据爬虫实际需求来写,比如爬取结果格式,若干次爬取中要有几次成功
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2019-12-19 21:01:10 | 显示全部楼层
黑色流星 发表于 2019-12-19 13:34
我明白了,您这边的课程里面有这方面的内容吗?

有啊,有兴趣的可以来听,也有试听章节
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2019-12-19 21:06:37 | 显示全部楼层
yvette 发表于 2019-12-19 13:47
请python 爬虫高手(selenium技术)帮忙解决几个问题,谢谢!
环境:python36,selenium 3.3.1,phantomjs2.1.1
...

第一个
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 "
)
driver = webdriver.PhantomJS(executable_path='./phantomjs', desired_capabilities=dcap)
第二个:针对性查看广告浮层的CSS或者xpath选择器,找出规律,然后点击关闭按钮
第三个:手动浏览会有缓存,快一些,还有其他各种原因,比如浏览器内核和网速不同。建议设置超时时间,多次重试,还有就是driver复用
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2019-12-19 21:07:41 | 显示全部楼层
roseolv 发表于 2019-12-19 13:51
数据来源:app,app上的数据都是实时变化的
如何验证爬虫爬的数据是否正确,该怎么比对?

这个没有很好的方法,可以针对数据总结规律,写校验程序,或者抽样和实际数据对比
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2019-12-26 14:57:23 | 显示全部楼层
jackman 发表于 2019-12-26 13:34
要对一个爬虫数据采集系统进行性能测试
该系统采用混合蜘蛛技术和变频抓取技术,在采集数据的中间处理环 ...

可以增加一个Pipeline,或者在pipeline中加一个钩子,将数据传输给测试程序,或者直接检测最终数据目标,比如数据库中数据量是否符合预期
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2020-1-3 14:15:51 | 显示全部楼层
jut984907 发表于 2020-1-3 10:51
你好,写爬虫是用多进程好?还是多线程好? 为什么呢?

这个要根据实际情况来,多数情况下,如果运算不多,就用多线程。如果负载大,就可以用多进程,每个进程中还可以多线程。不同语言也不同,python的多线程比较弱,java的多线程比较真实,php不支持多线程
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2020-1-3 14:17:24 | 显示全部楼层
ldneliza 发表于 2020-1-3 10:54
你好, 我现在用selenium抓取一个网站的时候,被识别为爬虫,请问有什么破解的方法么? 代码如下 import ti ...

你的代码不完整,但是一般初级一点就是user-agent没伪装好,还有就是ip没伪装好,高级一点的网站有反selenium检测,根据各自实际情况解决
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2020-1-6 13:19:15 | 显示全部楼层
落叶寒蝉 发表于 2020-1-6 10:36
小爬虫的问题。
而且用的别的方法,也找不到搜索设置这个元素,请大神这点迷津!

这个要具体看,首先你要保证你的选择器是正确的,还有就是这个元素加载完毕,要是没加载完,就等待直到加载完毕
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2020-1-6 13:22:14 | 显示全部楼层
ldneliza 发表于 2020-1-6 09:26
版主这个也是我想说的,各种不能爬。

所以做到后面,就是如何应对反爬和加密
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2020-1-8 09:25:17 | 显示全部楼层
小野落葵 发表于 2020-1-7 16:16
老师你好,最近在学习测试用例关于爬虫的,您这边是否有模板能够分享下呢?谢谢!

爬虫方面的测试没有固定的模版,而且爬虫抓取过程中存在不确定性,所以测试程序也有不确定性。
可以从以下三个模块入手:抓取,解析,存储结果。
抓取方面是不确定性最大的,但是也有一定的可操作性,比如抓取结果中要有一定比例成功,而且结果中要包含一些特征字符串。
解析方面,可以从数据库或者文件中读取html,这样的话就有确定性。
存储方面就是存储是否成功,存储之后再查询结果
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2020-1-14 13:04:25 | 显示全部楼层
mmyanzi 发表于 2020-1-13 10:55
测试的时候没问题,但运行爬虫时抓取数据不全
亚马逊商品列表数据爬取,测试的时候抓取数据没问题,但是运 ...

不同网站有不同规则,有可能是动态加载,也有可能是反爬
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-9 05:55 , Processed in 0.084196 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表