鱼C论坛

 找回密码
 立即注册
查看: 1074|回复: 10

两个小问题

[复制链接]
发表于 2019-5-22 09:37:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 肥^o^帅 于 2019-5-22 10:08 编辑

代码先上
  1. import requests
  2. import re
  3. import os
  4. import bs4
  5. def open(url):
  6.     res=requests.get(url)
  7.     return res
  8. url='http://www.yanwenzi.com/changyong/'
  9. res=open(url)
  10. res.encoding=res.apparent_encoding
  11. soup=bs4.BeautifulSoup(res.text,'html.parser')
  12. content=[]
  13. name=[]
  14. targets=soup.find_all('li')
  15. for each in targets:
  16.     content.append(each.p)
  17. content=content[23:]
  18. for each in targets:
  19.     name.append(each.div)
  20. name=name[23:]
  21. for i in range(len(name)):
  22.     print('{}\n{}'.format(content[i],name[i]))
复制代码

这样爬取颜文字表情,但是结果却是这样:
<p>w(&#65439;Д&#65439;)w</p>
<div>啊啊</div>
<p>(ノへ ̄、)</p>
<div>擦眼泪</div>
<p>( ̄_, ̄ )</p>
<div>不屑</div>
<p>ヽ(&#10047;&#65439;▽&#65439;)ノ</p>
<div>好耶</div>
<p>(&#3665;&#8226;&#768;&#12610;&#8226;&#769;)&#1608;&#10023;</p>
<div>棒</div>
<p>( ̄ε(# ̄)☆╰╮o( ̄皿 ̄///)</p>
<div>抽</div>
<p>(づ ̄3 ̄)づ╭&#10084;~</p>
<div>亲</div>
<p>Σ( ° △ °|||)︴</p>
<div>汗</div>
<p>(~ ̄(OO) ̄)ブ</p>
<div>笨</div>
<p>凸(艹皿艹 )</p>
<div>擦</div>
<p>(*  ̄3)(ε ̄ *)</p>
<div>啵啵</div>
<p>(* ̄rǒ ̄)</p>
<div>挖鼻屎</div>
<p>┗|`O′|┛ 嗷~~</p>
<div>嗷</div>
<p>φ(≧ω≦*)&#9834;</p>
<div>乐</div>
<p>︿( ̄︶ ̄)︿</p>
<div>飞</div>
<p>(u&#8255;&#3642;u&#10047;&#3642;)</p>
<div>好滴</div>
<p>Hi~ o(* ̄▽ ̄*)ブ</p>
<div>hi</div>
<p>&#9834;(^&#8711;^*)</p>
<div>啦啦</div>
<p>o(*≧▽≦)ツ┏━┓</p>
<div>拍桌</div>
<p>╰(*°▽°*)╯</p>
<div>惊喜</div>
>>>

p标签和div标签里的内容怎么正确显示?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-22 09:42:49 | 显示全部楼层
第一个问题在于这里

print(each.p)  这个each.p 没有内容,但你一定要它print 没办法 它只好输出none
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-22 09:48:13 | 显示全部楼层
wp231957 发表于 2019-5-22 09:42
第一个问题在于这里

print(each.p)  这个each.p 没有内容,但你一定要它print 没办法 它只好输出none

那后面怎么又把颜文字打印出来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-22 09:59:06 | 显示全部楼层
肥^o^帅 发表于 2019-5-22 09:48
那后面怎么又把颜文字打印出来了

bs4 不咋熟,你这个问题 用xpath 可以很好的实现
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-22 10:08:46 | 显示全部楼层
wp231957 发表于 2019-5-22 09:59
bs4 不咋熟,你这个问题 用xpath 可以很好的实现

我又改了一下,你再看看,另外我不会xpath啊,好用吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-22 10:16:12 | 显示全部楼层
肥^o^帅 发表于 2019-5-22 10:08
我又改了一下,你再看看,另外我不会xpath啊,好用吗

两点:
1、凡是#后跟一堆数字的  都是当前字符集无法正确显示
2、<div> <p> 之类的 不应该显示在最终结果之中
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-22 10:33:44 | 显示全部楼层
一楼代码 在我这里 基本能正确显示
去掉<p> <div> 就完美了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-22 11:03:16 | 显示全部楼层
这样试试:
  1. import requests
  2. import bs4

  3. url = 'http://www.yanwenzi.com/changyong/'

  4. res = requests.get(url)
  5. res.encoding = res.apparent_encoding

  6. soup = bs4.BeautifulSoup(res.text, 'html.parser')

  7. ul = soup.find_all(attrs={'id':'items'})

  8. for li in ul[0].find_all('li'):
  9.     print(li.find_all('p')[0].text,
  10.           '      ',
  11.           li.find_all('div')[0].text )
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-22 11:04:53 | 显示全部楼层
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-22 14:19:36 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-22 14:47:01 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-15 03:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表