最近自己编了个python小程序,目的是爬取celestrak里的星座轨道根数
目标网站:CelesTrak: Search Satellite Catalog “celestrak.com/satcat/search.php”
可以注意到,这是一个后缀为php的网站
大家可以自己用常规方式get一下,看看能不能返回正确的搜索结果
我的返回结果是空白,困扰了一天。
后面经过网上查找方法,找到了一个网站,可以将crul转换为python编程语言
Convert curl commands to code (curlconverter.com)
如图复制
如图将网站刷新一下找到:网络-全部-对应请求 ,把它的curl(bush)进行复制
再粘贴到curl commands 这一栏 右边选择python 他就会生成对应的python请求代码
[Python] 纯文本查看 复制代码 import requests
headers = {
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
'Origin': 'http://celestrak.com',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.76',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Referer': 'http://celestrak.com/satcat/search.php',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
}
data = {
'IDENT': 'SATNAME',
'SATNAME_TEXT': 'YAOGAN',
'INTDES_TEXT': '',
'CATNR_TEXT': '',
'MAX': '500',
'PAYLOAD': '1',
'B1': '\u63D0\u4EA4'
}
response = requests.post('http://celestrak.com/satcat/search-results.php', headers=headers, data=data, verify=False)
这一串代码就可以代替正常爬虫中的请求那一部分
只要在后面加上
[Python] 纯文本查看 复制代码 soup = BeautifulSoup(response.content, "html.parser") # 处理网站返回的数据
data1 = soup.find_all('tr', align='center')
这两行代码,data1就是自己要找的那部分数据对应的html了(BeautifulSoup强无敌!!!)
获得数据
这个问题搞得我很烦,还好最后解决了,希望能帮助到大家
附程序完整源码
52pojie.zip
(1.33 KB, 下载次数: 8)
|