求助一个对各位大佬来说很简单的爬虫问题
最近给孩子讲胎教故事,想用个爬虫爬取故事下来,参考别人的代码修改的,标题没有问题了,可是文本爬不到,求助一下各位大佬是什么原因呢?###爬取胎教故事
import requests
import parsel
###定义一个获取url的函数,获取url。
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36'}
def get_url():
r = requests.get('http://book.sbkk8.com/gushihui/taijiaogushi/',headers= headers)
selector = parsel.Selector(r.text)
url_s = selector.css('.mulu > ul > li > a::attr(href)').getall()
for url in url_s:
url = 'http://book.sbkk8.com/'+ url
#print(url)
download(url)
###定义一个下载函数
def download(url):
r = requests.get(url,headers = headers)
r.encoding = r.apparent_encoding
selector = parsel.Selector(r.text)
title = selector.css('#maincontent > h1::text').get()
content = selector.css('#content::text').getall()
text = ""
for i in content:
text = text + i.strip()+'\n'
path = 'C:\\Users\\yimin.lu\\Desktop\\胎教故事.txt' ###这个是文件存放路径,可以自行修改
with open(path,mode='a',encoding='utf-8') as f:
f.write(title)
f.write('\n')
f.write(text)
f.write('**************************************************************************'*3)
f.write('\n')
print("由"+url +"获取。" + title + " 下载成功") 可能是css选择器不对,就是这一句,content = selector.css('#content::text').getall()
具体没看,要是你确定选择器没问题的话,那还有可能是这个页面是js动态加载的,requests爬不到动态生成的页面 不打印r.text来看怎知道源是什么样的 cmy2019 发表于 2020-12-3 12:18
可能是css选择器不对,就是这一句,content = selector.css('#content::text').getall()
具体没看,要是你 ...
确实是这一句的问题大佬,但是这个页面应该不是js的吧,我应该怎么做呢? fanvalen 发表于 2020-12-3 12:32
不打印r.text来看怎知道源是什么样的
谢谢大佬,我打印了一下,信息有点多,是不是content = selector.css('#content::text').getall()这句错了啊?
由http://book.sbkk8.com//gushihui/taijiaogushi/92608.html获取。害羞的小精灵 下载成功
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>胎教故事_勇敢机智的小黄鹂</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="mobile-agent" content="format=html5;url=http://m.sbkk8.com/gushihui/taijiaogushi/92607.html">
<meta http-equiv="Cache-Control" content="no-transform" />
<linkrel="icon" type="image/x-icon" />
<linkrel="shortcut icon" type="image/x-icon" />
<linkrel="bookmark" type="image/x-icon" />
<link rel="stylesheet" type="text/css" href="/templets/default/css/p.css" />
<link rel="stylesheet" type="text/css" href="/templets/default/css/book.css" />
<script src="http://book.sbkk8.com/js/m.js" type="text/javascript"></script>
<script type="text/javascript">
mRedirect("http://m.sbkk8.com/gushihui/taijiaogushi/92607.html");
</script>
</head>
<body>
<div id="topbar">
<div id="logo"><a href="/"><img src="http://book.sbkk8.com/images/logo.png" border="0" alt="天涯书库" /></a></div>
<div id="menu">
<ul>
<li class="current"><a href="/">首页</a></li>
<li><a >古典文学</a></li>
<li><a >故事会</a></li>
<li><a >美容养生</a></li>
<li><a >作文</a></li>
</ul>
</div>
</div>
<div id="mebg"> <span class="mebgL" ></span>
<div class="mySearch">
<formname="formsearch" action="/plus/search.php">
<input type="hidden" name="kwtype" value="0" />
<input type="text" class="myKey" name="q" id="searchInput" onblur="if(this.value==''){this.value='请输入关键字......';}" onfocus="if(this.value=='请输入关键字......'){this.value='';}" value="请输入关键字......" />
<select name="searchtype" class="search-option" id="search-option" style="display:none;">
<option value="title" selected='1'>检索标题</option>
<option value="titlekeyword">智能模糊</option>
</select>
<input type="submit" class="mySumit" value="搜索" />
</form>
</div>
<span class="mebgR" ></span>
<div class="bdsharebuttonbox" style="float:right; margin-top:5px;"><a href="#" class="bds_more" data-cmd="more">分享到:</a><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信">微信</a><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间">QQ空间</a><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博">新浪微博</a><a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博">腾讯微博</a><a href="#" class="bds_tqf" data-cmd="tqf" title="分享到腾讯朋友">腾讯朋友</a><a href="#" class="bds_douban" data-cmd="douban" title="分享到豆瓣网">豆瓣网</a></div>
</div> 谢谢大佬们了,我弄好了,改成这样content = selector.css('#content > p::text').getall()就好了。。。。。
页:
[1]