zsk123 发表于 2021-12-4 14:19

爬虫问题求助

吾爱的朋友们,大家好:
我在学习使用selenium爬取图片时遇到了一些问题,想求助一下大家。
具体说就是爬取的网站有权限认证,比如在发请求:https://doge.zzzmh.cn/wallpaper/origin/724a141e9ffd4a519b9d582151f1c54d.png?response-content-disposition=attachment
应该是直接获取图片的数据 但是会提示没有权限访问该页面应该是请求字符串response-content-disposition=attachment 的问题
请问这个请求字符串一般存贮在哪里?
或者说大家是怎么爬取带权限认证的数据的?
希望有大哥解答一下,万分感谢!


from selenium import webdriver
from lxml import etree
from selenium.webdriver.chrome.service import Service
import requests
import time
path = Service('D:\\Python\\project\\Spyder\\resources\\chromedriver.exe')
broswer = webdriver.Chrome(service=path)
url = 'https://bz.zzzmh.cn/index'
res = broswer.get(url=url)
broswer.implicitly_wait(10)
span_button = broswer.find_element_by_xpath(
    '//*[@id="app"]/div/main/div/div/div/div/div/span/a[@]')
span_button.click()
html = broswer.page_source
page_text = etree.HTML(html)
a_list = page_text.xpath(
    '//*[@id="app"]/div/main/div/div/div/div/div/span/a/@href')

headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0,Win64,x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.41'
}
# print(broswer.get_cookies())
broswer.implicitly_wait(10)
time.sleep(15)
# broswer.get(a_list)
# r1=broswer.page_source
# response = requests.get(a_list, headers=headers).content
time.sleep(5)
print(type(broswer.get(a_list[0])))
print(type(a_list),len(a_list),a_list[0])
broswer.close()


Anekys 发表于 2021-12-4 17:47

本帖最后由 Anekys 于 2021-12-4 17:50 编辑

https://imgtu.com/i/o0CFFx
其实做爬虫时建议你先尝试下参数是否校验的,我把你说的那一长串直接去掉了
用Get请求可以直接获取到图片,只需要User-Agent和Referer两个Header
https://s4.ax1x.com/2021/12/04/o0CFFx.png

https://static.52pojie.cn/static/image/hrline/1.gif

我丢,发现了论坛的一个bug,简洁模式提交的图片在高级模式居然没办法删除{:301_1008:}
不知道第一张图会不会也加载出来,凑活看吧

zsk123 发表于 2021-12-4 18:55

谢谢老哥,headers里面只用包含useragent和refer就行了是吧?

chaojiak47 发表于 2021-12-4 19:15

headers里面只用包含useragent 就可以

zsk123 发表于 2021-12-4 19:36

chaojiak47 发表于 2021-12-4 19:15
headers里面只用包含useragent 就可以

这个只用useragent是不行的,我查了一下,referer属性根据阮一峰老师的解释是这样的:HTTP 协议在请求(request)的头信息里面,设计了一个Referer字段,给出"引荐网页"的 URL。



这个字段是可选的。客户端发送请求的时候,自主决定是否加上该字段。
必须加上这个属性才能通过权限认证从外链获取

zsk123 发表于 2021-12-4 19:37

Anekys 发表于 2021-12-4 17:47
其实做爬虫时建议你先尝试下参数是否校验的,我把你说的那一长串直接去掉了
用Get请求可以直接获取到图片 ...

谢谢老哥,终于成功了!

chaojiak47 发表于 2021-12-4 19:39

还有滑动验证码

zsk123 发表于 2021-12-4 19:46

chaojiak47 发表于 2021-12-4 19:39
还有滑动验证码

滑动验证码一般咋解决的?是Selenium控制鼠标实现动作链吗?

1942 发表于 2021-12-4 19:54

这个网址应该用selenium 批量获取page_source, 让后解析出 图片url, 获取到全部图片url之后, 再构造headers 单独批量下载图片

zsk123 发表于 2021-12-4 19:59

1942 发表于 2021-12-4 19:54
这个网址应该用selenium 批量获取page_source, 让后解析出 图片url, 获取到全部图片url之后, 再构造heade ...

是的,确实如此
页: [1] 2
查看完整版本: 爬虫问题求助