鱼C论坛

 找回密码
 立即注册
查看: 3682|回复: 10

[已解决]爬虫爬取源码

[复制链接]
发表于 2023-2-6 22:52:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import requests
  2. from lxml import html
  3. etree = html.etree
  4. header = {
  5.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
  6. }
  7. url = 'https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908'
  8. response = requests.get(url=url,headers=header).text
  9. print(response)
复制代码

大佬们,这个为什么爬取不到页面源码呀
最佳答案
2023-2-6 23:15:06
本帖最后由 isdkz 于 2023-2-6 23:41 编辑

爬到的结果这里可以看到最后面有这么一段 js 代码

function reload(x) {setCookie("acw_sc__v2", x);document.location.reload();}

这里是设置了一个 cookie 然后重载界面,这个 x 是 js 算出来的,你可以想办法执行获取到的 js 代码得到这个x,也可以审计它的js代码并把逻辑在 Python 中复现 (但是我看了一下它那个js是混淆加密了的,除非你精力旺盛有时间,不然就别想了)

最简单的办法还是去浏览器复制,不用复制完全,就复制这个界面需要的 acw_sc__v2,因为这个 Cookie 是这个页面最后设置的一个 Cookie,所以它应该排在 Cookie 的最后面

代码(记得改这个 Cookie,去你的浏览器那里复制,因为这个Cookie的有效期很短):
  1. import requests
  2. from lxml import html
  3. etree = html.etree
  4. header = {
  5.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
  6.     'Cookie': 'acw_sc__v2=63e1167ba5665f0022e4fc72118dfc0e71b871b8'                              # 要改这里
  7. }

  8. url = 'https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908'
  9. response = requests.get(url=url, headers=header).text
  10. print(response)
复制代码
屏幕截图(14).png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-2-6 23:15:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2023-2-6 23:41 编辑

爬到的结果这里可以看到最后面有这么一段 js 代码

function reload(x) {setCookie("acw_sc__v2", x);document.location.reload();}

这里是设置了一个 cookie 然后重载界面,这个 x 是 js 算出来的,你可以想办法执行获取到的 js 代码得到这个x,也可以审计它的js代码并把逻辑在 Python 中复现 (但是我看了一下它那个js是混淆加密了的,除非你精力旺盛有时间,不然就别想了)

最简单的办法还是去浏览器复制,不用复制完全,就复制这个界面需要的 acw_sc__v2,因为这个 Cookie 是这个页面最后设置的一个 Cookie,所以它应该排在 Cookie 的最后面

代码(记得改这个 Cookie,去你的浏览器那里复制,因为这个Cookie的有效期很短):
  1. import requests
  2. from lxml import html
  3. etree = html.etree
  4. header = {
  5.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
  6.     'Cookie': 'acw_sc__v2=63e1167ba5665f0022e4fc72118dfc0e71b871b8'                              # 要改这里
  7. }

  8. url = 'https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908'
  9. response = requests.get(url=url, headers=header).text
  10. print(response)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-7 09:22:27 | 显示全部楼层
isdkz 发表于 2023-2-6 23:15
爬到的结果这里可以看到最后面有这么一段 js 代码

function reload(x) {setCookie("acw_sc__v2", x);doc ...

好的,感谢感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-7 11:25:12 | 显示全部楼层
isdkz 发表于 2023-2-6 23:15
爬到的结果这里可以看到最后面有这么一段 js 代码

function reload(x) {setCookie("acw_sc__v2", x);doc ...

那可以用selenium获取cookie,然后用requests爬取源码吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-7 11:26:25 | 显示全部楼层
哈岁NB 发表于 2023-2-7 11:25
那可以用selenium获取cookie,然后用requests爬取源码吗


可以,也可以用 requests-html,requests-html这个库你可以了解一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-7 11:36:17 | 显示全部楼层
isdkz 发表于 2023-2-7 11:26
可以,也可以用 requests-html,requests-html这个库你可以了解一下

好的,感谢感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-7 12:04:37 | 显示全部楼层
本帖最后由 哈岁NB 于 2023-2-7 12:06 编辑
isdkz 发表于 2023-2-7 11:26
可以,也可以用 requests-html,requests-html这个库你可以了解一下

  1. import requests
  2. from lxml import html
  3. etree = html.etree
  4. from selenium import webdriver
  5. from selenium.webdriver.common.by import By
  6. from time import sleep

  7. bro = webdriver.Chrome('D:/技能/chromedriver.exe')
  8. bro.get('https://xiaoyuan.zhaopin.com/')
  9. bro.find_element(By.XPATH,'//*[@id="root"]/div/div[1]/div/div[1]/div[2]/a[1]').click()
  10. sleep(10)
  11. bro.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div/div[3]/span[2]').click()
  12. sleep(2)

  13. cookies = bro.get_cookies()

  14. bro.quit()

  15. #解析cookie
  16. dic = {}
  17. for cookie in cookies:
  18.     dic[cookie['name']] = cookie['value']

  19. header = {
  20.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
  21. }
  22. url = 'https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908'
  23. response = requests.get(url=url,headers=header,cookies=dic).text
  24. print(response)
复制代码

用selenium爬取cookie,怎么爬到cookie就缺少acw_sc__v2这个呢

到这就没了,没有爬到acw_sc__v2这个

到这就没了,没有爬到acw_sc__v2这个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-7 12:21:36 | 显示全部楼层
哈岁NB 发表于 2023-2-7 12:04
用selenium爬取cookie,怎么爬到cookie就缺少acw_sc__v2这个呢

因为那个 cookie 是在 https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908 这个页面生成的,而你用 selenium 访问的不是这个页面
  1. import requests
  2. from lxml import html
  3. etree = html.etree
  4. import warnings
  5. from selenium import webdriver
  6. from selenium.webdriver.common.by import By
  7. from selenium.webdriver.chrome.options import Options
  8. from time import sleep

  9. warnings.simplefilter('ignore',Warning)
  10. chrome_options = Options()
  11. chrome_options.add_argument('--headless')

  12. bro = webdriver.Chrome('chromedriver.exe', options=chrome_options)
  13. url = 'https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908'
  14. bro.get(url)
  15. #解析cookie
  16. cookie = {}
  17. cookie['acw_sc__v2'] = bro.get_cookie('acw_sc__v2')['value']
  18. bro.quit()


  19. header = {
  20.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
  21. }
  22. response = requests.get(url=url,headers=header,cookies=cookie).text
  23. print(response)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-7 12:32:01 | 显示全部楼层
isdkz 发表于 2023-2-7 12:21
因为那个 cookie 是在 https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908 这个页面生成的,而你 ...

这个页面不是也有acw_sc__v2这个吗

这个页面不是也有acw_sc__v2这个吗

这个页面不是也有acw_sc__v2这个吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-7 13:19:35 | 显示全部楼层
哈岁NB 发表于 2023-2-7 12:32
这个页面不是也有acw_sc__v2这个吗

那个是你访问过  https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908 之后留下的,

你可以重新开一个无痕页面直接访问 https://xiaoyuan.zhaopin.com 就会发现 cookie 没有 acw_sc__v2 这个,

要你访问过 https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908 之后才有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-7 15:02:46 | 显示全部楼层
isdkz 发表于 2023-2-7 13:19
那个是你访问过  https://xiaoyuan.zhaopin.com/job/CC407288330J40383568908 之后留下的,

你可以重 ...

明白了,感谢感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 01:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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