feiying10256 发表于 2020-12-3 11:53

求助一个对各位大佬来说很简单的爬虫问题

最近给孩子讲胎教故事,想用个爬虫爬取故事下来,参考别人的代码修改的,标题没有问题了,可是文本爬不到,求助一下各位大佬是什么原因呢?


###爬取胎教故事
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 + "    下载成功")

cmy2019 发表于 2020-12-3 12:18

可能是css选择器不对,就是这一句,content = selector.css('#content::text').getall()
具体没看,要是你确定选择器没问题的话,那还有可能是这个页面是js动态加载的,requests爬不到动态生成的页面

fanvalen 发表于 2020-12-3 12:32

不打印r.text来看怎知道源是什么样的

feiying10256 发表于 2020-12-3 13:12

cmy2019 发表于 2020-12-3 12:18
可能是css选择器不对,就是这一句,content = selector.css('#content::text').getall()
具体没看,要是你 ...

确实是这一句的问题大佬,但是这个页面应该不是js的吧,我应该怎么做呢?

feiying10256 发表于 2020-12-3 13:13

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>

feiying10256 发表于 2020-12-3 13:52

谢谢大佬们了,我弄好了,改成这样content = selector.css('#content > p::text').getall()就好了。。。。。
页: [1]
查看完整版本: 求助一个对各位大佬来说很简单的爬虫问题