鱼C论坛

 找回密码
 立即注册
查看: 2110|回复: 15

[已解决]做爬虫的一些问题

[复制链接]
发表于 2021-5-15 09:09:43 | 显示全部楼层 |阅读模式

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

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

x
url如下:
https://ned.ipac.caltech.edu/byname?objname=PKS%200002-478&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1

这个网页的数据画红圈的数据要怎么爬下来?
最佳答案
2021-5-17 21:19:01
snowJR 发表于 2021-5-17 07:30
原来的搜索的url是这一个

https://ned.ipac.caltech.edu/
import requests
import re
import time
from urllib import parse


def parser(datas):
    for data in datas:
        print(data)

def get_data(objid, keyword):
    url = 'https://ned.ipac.caltech.edu/ffs/sticky/CmdSrv'
    ff = str(int(time.time() * 1000))
    data = {
        'request': '{"startIdx":0,"pageSize":1000,"ffSessionId":"FF-Session-'+ff+'","filters":"","source":"http://ned.ipac.caltech.edu/cgi-bin/objsearch?extend=no&out_csys=Equatorial&out_equinox=J2000.0&obj_sort=RA+or+Longitude&of=xml_qlphot&zv_breaker=30000.0&list_limit=5&img_stamp=YES&objname='+keyword+'&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1&objid='+objid+'","alt_source":"http://ned.ipac.caltech.edu/cgi-bin/objsearch?extend=no&out_csys=Equatorial&out_equinox=J2000.0&obj_sort=RA+or+Longitude&of=xml_qlphot&zv_breaker=30000.0&list_limit=5&img_stamp=YES&objname='+keyword+'&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1&objid='+objid+'","META_INFO":{"title":"qlphot","tbl_id":"tbl_id-c50b9-6","col.Refcode.PrefWidth":"20","col.Spectral Region.PrefWidth":"14","col.Band.PrefWidth":"17","col.Apparent Mag or Flux.PrefWidth":"16","col.Reference code.PrefWidth":"12","selectInfo":"false--0"},"tbl_id":"tbl_id-c50b9-6","id":"IpacTableFromSource"}',
        'cmd': 'tableSearch'
    }
    res = requests.post(url, headers=headers, data=data)
    return res.json()['tableData']['data']

def get_objid(keyword):
    url = f'https://ned.ipac.caltech.edu/byname?objname={keyword}&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1'
    res = requests.get(url, headers=headers)
    objid = re.findall('objid=(.*?)"', res.text)[0]
    datas = get_data(objid, keyword)
    parser(datas)

if __name__ == '__main__':
    word = input('输入关键词:')
    key_word = parse.quote(word)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
    }
    get_objid(key_word)
微信图片_20210515090815.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-15 09:10:49 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-15 10:18:07 | 显示全部楼层
https://ned.ipac.caltech.edu/ffs/sticky/CmdSrv
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 10:18:51 | 显示全部楼层
F12找我上面发的那个链接
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 10:29:26 | 显示全部楼层
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('https://ned.ipac.caltech.edu/byname?objname=PKS%200002-478&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1')
time.sleep(5)

driver.find_element_by_id('ui-id-10').click()  #切换到Photometry & SED (47)选项卡
time.sleep(5)

tab1 = driver.find_elements_by_xpath('//div[@class="fixedDataTableLayout_rowsContainer"]')[0]
#因为该选项卡下有两个表格,所以用[0]指定为第一个表格
cells = tab1.find_elements_by_class_name('public_fixedDataTableCell_cellContent')
#表格单元class均为public_fixedDataTableCell_cellContent
txt = [i.text for i in cells]
print(txt)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-15 17:38:30 | 显示全部楼层
南归 发表于 2021-5-15 10:18
F12找我上面发的那个链接

不是很明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 18:56:30 | 显示全部楼层
自己多分析F12咋用吧....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-15 19:08:21 | 显示全部楼层
南归 发表于 2021-5-15 18:56
自己多分析F12咋用吧....

这种属于ajax编码的网页吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 19:17:19 | 显示全部楼层

                               
登录/注册后可看大图


先打开网页,等待加载完毕后,先清空抓包记录,再点击Photometry & SED (47),搜索Gamma-Ray,得到如图所示的界面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 21:06:14 | 显示全部楼层
楼上兄弟已经给你找到数据接口了,你直接携带参数请求数据接口就能拿到数据。
import requests

url = 'https://ned.ipac.caltech.edu/ffs/sticky/CmdSrv'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
}
data = {
    'request': '{"startIdx":0,"pageSize":1000,"ffSessionId":"FF-Session-1621083370564","filters":"","source":"http://ned.ipac.caltech.edu/cgi-bin/objsearch?extend=no&out_csys=Equatorial&out_equinox=J2000.0&obj_sort=RA+or+Longitude&of=xml_qlphot&zv_breaker=30000.0&list_limit=5&img_stamp=YES&objname=PKS+0002-478&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1&objid=76355","alt_source":"http://ned.ipac.caltech.edu/cgi-bin/objsearch?extend=no&out_csys=Equatorial&out_equinox=J2000.0&obj_sort=RA+or+Longitude&of=xml_qlphot&zv_breaker=30000.0&list_limit=5&img_stamp=YES&objname=PKS+0002-478&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1&objid=76355","META_INFO":{"title":"qlphot","tbl_id":"tbl_id-c50b9-6","col.Refcode.PrefWidth":"20","col.Spectral Region.PrefWidth":"14","col.Band.PrefWidth":"17","col.Apparent Mag or Flux.PrefWidth":"16","col.Reference code.PrefWidth":"12","selectInfo":"false--0"},"tbl_id":"tbl_id-c50b9-6","id":"IpacTableFromSource"}',
    'cmd': 'tableSearch'
}
res = requests.post(url, headers=headers, data=data)
print(res.json())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-16 10:12:46 | 显示全部楼层
YunGuo 发表于 2021-5-15 21:06
楼上兄弟已经给你找到数据接口了,你直接携带参数请求数据接口就能拿到数据。

当我改变搜索的目标时,data的信息要自动获取?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-16 19:19:44 | 显示全部楼层
snowJR 发表于 2021-5-16 10:12
当我改变搜索的目标时,data的信息要自动获取?

改一下data查询参数就行,你举个例看看,你要搜索的其他内容,我分析分析查询参数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-17 07:29:51 | 显示全部楼层
YunGuo 发表于 2021-5-16 19:19
改一下data查询参数就行,你举个例看看,你要搜索的其他内容,我分析分析查询参数。

比如说我现在要查询 0106+013  这一个的信息
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-17 07:30:43 | 显示全部楼层
YunGuo 发表于 2021-5-16 19:19
改一下data查询参数就行,你举个例看看,你要搜索的其他内容,我分析分析查询参数。

原来的搜索的url是这一个

https://ned.ipac.caltech.edu/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-17 21:19:01 | 显示全部楼层    本楼为最佳答案   
snowJR 发表于 2021-5-17 07:30
原来的搜索的url是这一个

https://ned.ipac.caltech.edu/
import requests
import re
import time
from urllib import parse


def parser(datas):
    for data in datas:
        print(data)

def get_data(objid, keyword):
    url = 'https://ned.ipac.caltech.edu/ffs/sticky/CmdSrv'
    ff = str(int(time.time() * 1000))
    data = {
        'request': '{"startIdx":0,"pageSize":1000,"ffSessionId":"FF-Session-'+ff+'","filters":"","source":"http://ned.ipac.caltech.edu/cgi-bin/objsearch?extend=no&out_csys=Equatorial&out_equinox=J2000.0&obj_sort=RA+or+Longitude&of=xml_qlphot&zv_breaker=30000.0&list_limit=5&img_stamp=YES&objname='+keyword+'&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1&objid='+objid+'","alt_source":"http://ned.ipac.caltech.edu/cgi-bin/objsearch?extend=no&out_csys=Equatorial&out_equinox=J2000.0&obj_sort=RA+or+Longitude&of=xml_qlphot&zv_breaker=30000.0&list_limit=5&img_stamp=YES&objname='+keyword+'&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1&objid='+objid+'","META_INFO":{"title":"qlphot","tbl_id":"tbl_id-c50b9-6","col.Refcode.PrefWidth":"20","col.Spectral Region.PrefWidth":"14","col.Band.PrefWidth":"17","col.Apparent Mag or Flux.PrefWidth":"16","col.Reference code.PrefWidth":"12","selectInfo":"false--0"},"tbl_id":"tbl_id-c50b9-6","id":"IpacTableFromSource"}',
        'cmd': 'tableSearch'
    }
    res = requests.post(url, headers=headers, data=data)
    return res.json()['tableData']['data']

def get_objid(keyword):
    url = f'https://ned.ipac.caltech.edu/byname?objname={keyword}&hconst=67.8&omegam=0.308&omegav=0.692&wmap=4&corr_z=1'
    res = requests.get(url, headers=headers)
    objid = re.findall('objid=(.*?)"', res.text)[0]
    datas = get_data(objid, keyword)
    parser(datas)

if __name__ == '__main__':
    word = input('输入关键词:')
    key_word = parse.quote(word)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
    }
    get_objid(key_word)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-18 08:34:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 20:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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