python爬取小说(一)

332 阅读1分钟

python爬取小说网页内容以及遇到的问题解决

  • 简单的爬取小说
#  coding:UTF-8 -*-
import requests
 
if __name__ == '__main__':
    target = 'https://www.52bqg.com/book_24967/10502028.html'
    req = requests.get(url=target)
    print(req.text)

target是要爬取的目标连接url 但是这种爬取方式会出现乱码

类似于这样的乱码:

&nbsp;&nbsp;&nbsp;&nbsp;ΪʲôºÚÎí¹ÈÕâôΣÏÕ£¬¿ª×ÚÀÏ׿¸úÆäËûÈË»¹Òª´³½øÀ´£¿<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ß×£¬ÕâºÚÎí¹ÈÖв»Éٵط½»¹³¤×ÅÁéÒ©£¬ÕæÊǸöÆæ¹ÖµÄµØ·½£¡<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;³þ³¿Õð¾ªÖ®Ó࣬¿ªÊ¼²»¶ÏÍùÉÏ·É£¬µ±³åÆÆÔÆ²ãÒ»°ãµÄŨŨºÚÎíʱ£¬Ëû¿´µ½ÁËÒ»×ù¾Þ´óµÄɽÂö¡£<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ò»×ùͨÌåÆáºÚ£¬¸ßËÊÈëÔÆ£¬»ÖºëÎޱȵĹÅɽËÊÁ¢ÔÚ²ÔãµÄºÚÎíÖС£ÕâºÚÎí¹È¾¹È»Òþ²Ø×ÅÕâôһ×ù»ÖºëµÄ¹Åɽ£¡<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ɽÉϾ¹È»¶¼ÊÇʬÌ壬һ²ãÓÖÒ»²ãµÄµþÔÚÒ»Æð£¬ÕâЩʬÊ×´ó¶àÒѾ­±»ËºÁÑ£¬ËÀ×´¼«Îª²ÒÁÒ£¬ÏñÊÇ·¢Éú¹ýÒ»³¡¿õ¹ÅÕ½ÕùÒ»°ã¡£<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Õâ¡­¡­²»ÊÇ÷è÷ëÂð£¿Ò»¸ö¾Þ´óµÄѪ÷è÷ëµÄÍ·¶î»ìÔÚʬ¶Ñµ±ÖУ¬ÏÔµÃÌØ±ðÒ«ÑÛ£¬ÕâÕ½³¡Öо¹È»»¹ÓÐÉϹÅÉñÊÞ±»É±£¿<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;³þ³¿ºÜ¿ì¾Í·¢ÏÖ£¬×Ô¼ºÕ𾪵ÃÌ«ÔçÁË£¬Ô½ÍùÉÏ·É£¬Ëû¿´µ½µÄÉϹÅÉñÊÞÓëÌ«¹ÅÑýħµÄʬÌå¾ÍÔ½¶à¡£<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ºÜ¿ìËû¾ÍÒѾ­ÂéľÁË£¬²»¹ý¾ÍÔÚËû·Éµ½°ëɽÑüʱ£¬ÔÚȺʬÖп´µ½ÁËÒ»ÕÅÊìϤµÄÃæ¿×£¬Ò»Õž޴óµÄÌ«¼«²Ðͼ£¬ÓëÕû¸ö´óµØ»¯ÎªÒ»Ì壬ºÚ°×Á½É«¼«ÆäÃ÷ÏÔ¡£<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;²Ðͼ±ßÔµ£¬¶¼ÊÇÒª³å½øÈ¥µÄʬÊ×£¬ËƺõûÓÐÈËÄÜԽͼ°ë²½£¬¶øÌ«¼«Í¼µÄÖÐÐÄ£¬ÊÇÒ»¸öÃæÈÝÇåÛÇÏÉ·çµÀ¹ÇµÄÀÏÕߣ¬Õâ¡­¡­Õâ·ÖÃ÷¾ÍÊǼҼһ§»§¶¼¹©·îµÄÌ«ÉÏÀϾý£¡<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ËûÔõô»áËÀÔÚÕâÀ<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Ì«ÉÏÀϾý±»Ò»Ö§½ðÉ«µÄ¼ý£¬´ÓÐÄÔಿ붤ËÀÔÚ×Ô¼ºµÄ¡°ÎÞÉÏÌ«¼«Í¼¡±ÉÏ£¬ËûÊֱ߻¹ÈÓ×ÅÒ»°ÑÒøË¿ÈçÑ©µÄÆÆËé¡°·÷³¾¡±¡£<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;ÎÞÉÏÌ«¼«Í¼£¬Ìì½ç·÷³¾£¬ÕâЩ¶¼ÊÇͨÌì³¹µØµÄ±¦Î<br />

原因是网页的编码不同,所以要找到该网页的编码方式。爬取过来的内容是网页的全部内容,即是html代码。所以开头可以查看网页的编码方式

`<meta http-equiv="Content-Type" content="text/html; charset=gbk" />`

可以发现是gbk编码方式 于是改为utf-8编码方式,加一句代码 req.encoding=('gbk')

最后的代码就是

#  coding:UTF-8 -*-
import requests
 
if __name__ == '__main__':
    target = 'https://www.52bqg.com/book_24967/10502028.html'
    
    req = requests.get(url=target)
    req.encoding=('gbk')
    print(req.text)

这样整个网页的内容都可以爬取过来,而且是正常的编码啦

下次讲如何挑选出我们需要的内容。