Requests爬虫问题
大佬们,我现在要用Requests包去爬一个网址,这个网址需要登录密码之后才可以爬取。我现在已经完成了登录操作,但是我发现在爬取出来的数据是有问题的,我最需要的数据无法爬取出来,如下图所示:这是我的代码:
想问一下大佬们该如何解决? 你这不是提取出来了吗 但是我发现在爬取出来的数据是有问题的,我最需要的数据无法爬取出来,如下图所示:
需要的数据请求不到?还是什么问题?最后打印的响应请求文本没有需要的数据?? 我最需要的数据无法爬取出来,如下图所示:
红框里不就是你最需要的数据吗,不然你标红框干嘛? suchocolate 发表于 2020-5-30 23:18
红框里不就是你最需要的数据吗,不然你标红框干嘛?
不是的,红框里显示告诉我,因为我的浏览器无法显示json数据,这是一段提示话。我真正需要的数据没有给我显示出来 我猜是这样:用session登录,然后用session去请求真是的数据网址
shenshuai 发表于 2020-5-31 00:25
不是的,红框里显示告诉我,因为我的浏览器无法显示json数据,这是一段提示话。我真正需要的数据没有给我 ...
headers调用试试 1、登录后把请求头“Referer”带上
2、好好分析你要的数据的响应体是访问的哪个url 是.js文件还没有渲染出来,用selenium模块配合chromed driver加上谷歌浏览器就可以获取到渲染后的页面, 用switch_frame函数切换到你想要爬取的框架,就可以read到你想要获得的数据。 # 此脚本需要配合谷歌浏览器与谷歌驱动
# 作者:那宏岩
import urllib.request
import re
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def search(music=None,singer=None):
if not music and not singer:
raise ImportError('参数错误!!')
if not music:
name = singer
else:
name = music
chrome_opt = Options() # 创建参数设置对象.
chrome_opt.add_argument('--headless') # 无界面化.
# chrome_opt.add_argument('--disable-gpu') # 配合上面的无界面化.
driver = webdriver.Chrome(chrome_options = chrome_opt,executable_path=r'C:\CLOUD Artification Intelligence\extanded_function\chromedriver.exe')
driver.get('https://music.163.com/#/search/m/?s=' + name)
driver.switch_to.frame('g_iframe')
music_list = re.findall(r'<a href="/song\?id=(\d*)"><b title="(.*?)">',driver.page_source)
singer_list = re.findall(r'<a href="/artist\?id=\d*">(.*?)</a>',driver.page_source)
driver.quit()
music_num = len(music_list)
download_list = list()
if singer:
for i in range(music_num):
if singer in singer_list:
download_list.append(music_list+(singer_list,))
else:
for i in range(music_num):
download_list.append(music_list+(singer_list,))
print(download_list)
down_load_sign = input(r'开始下载吗?:')
if down_load_sign == 'Y':
for each_music in download_list:
print(f'{each_music}-{each_music}.mp3正在下载!')
urllib.request.urlretrieve(f'http://music.163.com/song/media/outer/url?id={each_music}.mp3',f'C:\\CLOUD Artification Intelligence\\clouddata\\Sound\\{each_music}-{each_music}.mp3')
print(f'{each_music}-{each_music}.mp3下载完成!')
if __name__ == '__main__':
while True:
music_name = input('请输入歌曲名:')
singer_name = input('请输入歌手名:')
search(music_name,singer_name)
你可以看看我这个代码,本来是一个爬取网易云音乐的代码,里面包含了selenium的用法。改一改就可以在你的程序里使用了。 # 此脚本需要配合谷歌浏览器与谷歌驱动
# 作者:那宏岩
import urllib.request
import re
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def search(music=None,singer=None):
if not music and not singer:
raise ImportError('参数错误!!')
if not music:
name = singer
else:
name = music
chrome_opt = Options() # 创建参数设置对象.
chrome_opt.add_argument('--headless') # 无界面化.
# chrome_opt.add_argument('--disable-gpu') # 配合上面的无界面化.
driver = webdriver.Chrome(chrome_options = chrome_opt,executable_path=r'C:\CLOUD Artification Intelligence\extanded_function\chromedriver.exe')
driver.get('https://music.163.com/#/search/m/?s=' + name)
driver.switch_to.frame('g_iframe')
music_list = re.findall(r'<a href="/song\?id=(\d*)"><b title="(.*?)">',driver.page_source)
singer_list = re.findall(r'<a href="/artist\?id=\d*">(.*?)</a>',driver.page_source)
driver.quit()
music_num = len(music_list)
download_list = list()
if singer:
for i in range(music_num):
if singer in singer_list:
download_list.append(music_list+(singer_list,))
else:
for i in range(music_num):
download_list.append(music_list+(singer_list,))
print(download_list)
down_load_sign = input(r'开始下载吗?:')
if down_load_sign == 'Y':
for each_music in download_list:
print(f'{each_music}-{each_music}.mp3正在下载!')
urllib.request.urlretrieve(f'http://music.163.com/song/media/outer/url?id={each_music}.mp3',f'C:\\CLOUD Artification Intelligence\\clouddata\\Sound\\{each_music}-{each_music}.mp3')
print(f'{each_music}-{each_music}.mp3下载完成!')
if __name__ == '__main__':
while True:
music_name = input('请输入歌曲名:')
singer_name = input('请输入歌手名:')
search(music_name,singer_name)
nahongyan1997 发表于 2020-5-31 12:49
好的,我看看哈
用selenium不香吗? xiaosi4081 发表于 2020-6-1 16:27
用selenium不香吗?
不方便,我有上千个网页要爬,每个都要跟手动模式一样打开网页再点半天,肯定是不行的。要不然就是什么无头浏览器,那个写起来过于麻烦 hearers 加下cookie 看看,或者私信QQ,帮你瞅瞅 shenshuai 发表于 2020-6-1 16:55
不方便,我有上千个网页要爬,每个都要跟手动模式一样打开网页再点半天,肯定是不行的。要不然就是什么无 ...
这可是个大数据啊
页:
[1]