鱼C论坛

 找回密码
 立即注册
查看: 1008|回复: 8

爬虫遇到这问题

[复制链接]
发表于 2020-2-25 22:44:38 | 显示全部楼层 |阅读模式
4鱼币
我在爬取一个妹子网站的时候,出现了如图所示的问题。
那个网站是https://www.pexels.com/search/beautiful%20girl/
请问各位大佬应该怎么解决




我的代码如下:
  1. import requests
  2. import re
  3. import time
  4. Headers = {
  5.     'user-agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
  6. response=requests.get("https://www.pexels.com/search/beautiful%20girl/",headers=Headers)
  7. html=response.text
  8. print(html)
  9. print("------------------------------------------------------------------------------------------------")
  10. urls=re.findall('<a class="js-photo-link photo-item__link" style=".*?" title=".*?" href=".*?"><img srcset="(.*?).*?" .*?>',html)


  11. #保存图片
  12. for url in urls:
  13.     print(url)
复制代码

捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 23:55:21 | 显示全部楼层
  1. import requests
  2. import re
  3. import time
  4. s  = requests.session()
  5. Headers = {
  6.     'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
  7.     'accept-encoding': 'gzip, deflate, br',
  8.     'accept-language': 'zh-CN,zh;q=0.9',
  9.     'upgrade-insecure-requests': '1',
  10.     'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
  11. }
  12. response=s.get("https://www.pexels.com/search/beautiful%20girl/",headers=Headers)
  13. html=response.text
  14. print(html)
  15. print("------------------------------------------------------------------------------------------------")
  16. urls=re.findall('<a class="js-photo-link photo-item__link" style=".*?" title=".*?" href=".*?"><img srcset="(.*?).*?" .*?>',html)


  17. #保存图片
  18. for url in urls:
  19.     print(url)
复制代码

参数带齐,但是返回数据下面的样子,我看了下好像返回他自己有个    字体文件,回头在解析把
  1. &#65533;&#1396;&#65533;&#65533;&#65533;p&#65533;~9K&#65533;&#65533;y&#65533;&#1778;&#65533;Y&#65533;f7cY&#65533;IT&#65533;&#65533;%v&#65533;&#65533;I&#65533;&#65533;&#65533;.&#65533; m&#65533;&#65533;%Y6&#65533;&#65533;&#629;S1&#65533;&#65533;&#65533;&#65533;~&#65533;
  2. (##eX&#65533;d&#65533;&#65533;] &#65533;w&#65533;&#65533;à\&#65533;Y&#65533;*&#1385;P&#65533;
  3. &#65533;wkVN&#65533;&#65533;&#65533;c&#65533;&#65533; &#65533;5]&#65533;&#65533;j5&#65533; `\&#65533;Z&#65533;&#65533;&#65533;&#65533;d &#65533;&#65533;&#65533;&#65533;~&#65533;F&#65533;U*&#65533;&#1252;15&#65533;&#65533;&#65533;&#65533;*&#65533;&#65533;.&#65533;~&#65533;&#65533;&#65533;&#65533;&#1591;&#65533;,d&#65533;*&#65533;3&#908;&#65533;&#65533;&#65533;&#622;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;l&#65533;+&#65533;&#65533;d&#65533;&#65533;&#2002;x&#65533;(;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#660;D&#65533;&#65533;4&#65533;&#65533;&#65533;&#65533;Nn&#65533;&#65533;|+&#65533;-`[a@+4t[~&#65533;D&#65533;!pU&#65533;&#65533;
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 01:28:06 | 显示全部楼层
  1. Request URL: https://www.pexels.com/search/beautiful%20girl/
  2. Request Method: GET
  3. Status Code: 200
  4. Remote Address: 104.17.209.102:443
  5. Referrer Policy: no-referrer-when-downgrade
  6. age: 5610
  7. alt-svc: h3-25=":443"; ma=86400, h3-24=":443"; ma=86400, h3-23=":443"; ma=86400
  8. cache-control: max-age=3600
  9. cf-cache-status: HIT
  10. cf-ray: 56ab56e44b4b99c5-LAX
  11. content-encoding: br
  12. content-type: text/html; charset=utf-8
  13. date: Tue, 25 Feb 2020 17:18:36 GMT
  14. expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
  15. expires: Tue, 25 Feb 2020 18:18:36 GMT
  16. server: cloudflare
  17. status: 200
  18. vary: Accept-Encoding
  19. x-frame-options: ALLOWALL
  20. x-request-id: 9e10213b-644a-4e0e-90e0-8aa664df9caa
  21. x-runtime: 1.586400
复制代码

我用浏览器和postman都测试了,浏览器没有问题,postman有问题.
上面这个是浏览器中获取到的参数,可以看出,人家使用了cf的cache,都是cf代理的,而cf是专门做这个的,所以看样子很难搞.cf既然是专门搞这个的,显然可以对包进行特征检测,从而指导你是否是使用浏览器访问的.
另外,在浏览器中,我关闭了js,所有的资源依然可以访问,这说明确实是cf搞得鬼.
爬虫方面,最简单的做法是直接用浏览器,可以用pyqtwebengine,或者pythonnet+cefsharp,或者直接用chromedriver+selenium,需要注意的是可以把浏览器的js引擎关闭掉,这样就可以非常快了.当然,用qt4的webkit也可以.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 09:10:46 | 显示全部楼层
爬虫python不能加print(html)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-26 09:49:29 | 显示全部楼层
_摆架_回宫、 发表于 2020-2-25 23:55
参数带齐,但是返回数据下面的样子,我看了下好像返回他自己有个    字体文件,回头在解析把

好像是是编码错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-26 09:50:45 | 显示全部楼层
哈喇子淌一手 发表于 2020-2-26 01:28
我用浏览器和postman都测试了,浏览器没有问题,postman有问题.
上面这个是浏览器中获取到的参数,可以看出 ...

实在是听不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 10:48:59 | 显示全部楼层
三楼正解,所以get解决不了的都chromedriver+selenium。新书推荐这个组合
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-26 10:56:53 | 显示全部楼层
_摆架_回宫、 发表于 2020-2-26 10:48
三楼正解,所以get解决不了的都chromedriver+selenium。新书推荐这个组合

Traceback (most recent call last):
  File "J:\python_code_guitulb\get_pexel_girls\get_p_girls.py", line 14, in <module>
    print(html)
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 2179-2179: Non-BMP character not supported in Tk

这是三楼的报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 11:28:09 | 显示全部楼层
苏绛雪 发表于 2020-2-26 10:56
Traceback (most recent call last):
  File "J:\python_code_guitulb\get_pexel_girls\get_p_girls.py" ...

我意思直接用selenium控制浏览器,真实访问。我现在还在研究这个百度云加速。有新成果我发上来
如果你不想玩技术,单纯要拿图片。直接用selenium
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 05:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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