马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
比如我现在要爬取本地IP地址,爬取的网站为:https://apis.baidu.com/store/aladdin/land?cardType=ipSearch
浏览器访问的结果如图:
直接使用requests方法不能获取到IP,所以使用浏览器自带的控制台进行XHR文件抓取,查看后发现有两个query文件
发现IP就是在里面
于是使用代码:
url = r'https://gwgp-kk6owjrbujz.i.bdcloudapi.com/aladdin/ip/query'
session = requests.Session()
header = {
'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36',
}
params = {
'Host': 'gwgp-kk6owjrbujz.i.bdcloudapi.com',
'Origin': 'https://www.baidu.com',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'cross-site',
}
res = session.get(url=url, headers=header)
print(res.status_code)
print(res.content)
但返回的结果为:
400
b'{"code":"InvalidTimestamp","message":"Parameter \'timestamp\' is invalid."}'
继续打开文件,发现里面有个timestamp请求头,不知道如何组成。
请问这个IP要如何抓取?
换个专门查本机的网站吧,百度这个只是友情提示你的IP: import requests
import re
def main():
url = 'https://www.get-myip.com/'
headers = {'user-agent': 'firefox'}
r = requests.get(url, headers=headers)
result = re.findall(r'Address is : (.*?)</h1', r.text)
print(result)
if __name__ == '__main__':
main()
|