鱼C论坛

 找回密码
 立即注册
查看: 1819|回复: 5

[已解决]python爬虫

[复制链接]
发表于 2021-7-17 20:31:16 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 c皮皮o 于 2021-7-17 20:36 编辑
  1. list1=["<p>滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。</p>","<p>青山依旧在,几度夕阳红。</p>"]
复制代码

list1是一个<class 'bs4.element.ResultSet'>类型,
我用text,get_text(),string,都用了,但提示我这是标签集合没有上述的方法。
想请教大佬们,如何将这种类型的用字符串的形式打印出来(就是把 p标签给去掉,直接输出字符串)

附上代码:
  1. import urllib.request
  2. from bs4 import BeautifulSoup
  3. url1="http://www.newxue.com/gkmz/sgyy/"
  4. objects=urllib.request.Request(url1)
  5. objects.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67")
  6. response=urllib.request.urlopen(objects)
  7. html_content=response.read().decode("gbk")
  8. soup1=BeautifulSoup(html_content,"lxml")
  9. file=soup1.select(".xslttext>ul>li")
  10. del file[0]
  11. for each in file:
  12.     each_chapter=each.string
  13.     url2 = each.a["href"]
  14.     each_content = urllib.request.Request(url2)
  15.     each_content.add_header("User-Agent",
  16.                             "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67")
  17.     each_content1 = urllib.request.urlopen(each_content)
  18.     each_content1 = each_content1.read().decode("gbk")
  19.     soup2 = BeautifulSoup(each_content1, "lxml")
  20.     p = soup2.select("#dashu_text>p")
  21.     print(type(p))
复制代码
最佳答案
2021-7-17 20:37:50
本帖最后由 qq1151985918 于 2021-7-17 20:59 编辑

你这个就用替换吧,也省事。
  1. list1 = ["<p>滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。</p>", "<p>青山依旧在,几度夕阳红。</p>"]

  2. for each in list1:
  3.     print(each.replace("<p>", "").replace("</p>", ""))
复制代码



你刚刚没有代码吧,你的方法用的是不对的,text, get_text(), string  不是对 p 这个列表用,而是对里面的元素用
看例子
  1. for each in p:
  2.     print(each.text)

  3. for each in p:
  4.     print(each.get_text())

  5. for each in p:
  6.     print(each.string)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-17 20:37:50 | 显示全部楼层    本楼为最佳答案   
本帖最后由 qq1151985918 于 2021-7-17 20:59 编辑

你这个就用替换吧,也省事。
  1. list1 = ["<p>滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。</p>", "<p>青山依旧在,几度夕阳红。</p>"]

  2. for each in list1:
  3.     print(each.replace("<p>", "").replace("</p>", ""))
复制代码



你刚刚没有代码吧,你的方法用的是不对的,text, get_text(), string  不是对 p 这个列表用,而是对里面的元素用
看例子
  1. for each in p:
  2.     print(each.text)

  3. for each in p:
  4.     print(each.get_text())

  5. for each in p:
  6.     print(each.string)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-17 20:50:09 | 显示全部楼层
遍历list1,得到每一个p标签,p.text获取p标签的文本内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-17 20:53:02 | 显示全部楼层
  1. import urllib.request
  2. from bs4 import BeautifulSoup
  3. url1="http://www.newxue.com/gkmz/sgyy/"
  4. objects=urllib.request.Request(url1)
  5. objects.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67")
  6. response=urllib.request.urlopen(objects)
  7. html_content=response.read().decode("gbk")
  8. soup1=BeautifulSoup(html_content,"lxml")
  9. file=soup1.select(".xslttext>ul>li")
  10. del file[0]
  11. for each in file:
  12.     each_chapter=each.string
  13.     url2 = each.a["href"]
  14.     each_content = urllib.request.Request(url2)
  15.     each_content.add_header("User-Agent",
  16.                             "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67")
  17.     each_content1 = urllib.request.urlopen(each_content)
  18.     each_content1 = each_content1.read().decode("gbk")
  19.     soup2 = BeautifulSoup(each_content1, "lxml")
  20.     soup2
  21.     p = soup2.select("#dashu_text>p")
  22.     str = ""
  23.     for each_p in p:
  24.         # print(each_p.text)
  25.         str += each_p.text
  26.         str += '\n'  # 让结果好看些
  27.     print(str)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-17 20:54:13 | 显示全部楼层
King丨小义 发表于 2021-7-17 20:50
遍历list1,得到每一个p标签,p.text获取p标签的文本内容

牛批啊,我这脑子太蠢了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-17 20:56:42 | 显示全部楼层
本帖最后由 qq1151985918 于 2021-7-17 21:00 编辑

你刚刚没有代码吧,你的方法用的是不对的,text, get_text(), string  不是对 p 这个列表用,而是对里面的元素用
看例子
  1. for each in p:
  2.     print(each.text)

  3. for each in p:
  4.     print(each.get_text())

  5. for each in p:
  6.     print(each.string)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 18:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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