鱼C论坛

 找回密码
 立即注册
查看: 2645|回复: 12

[已解决]爬虫时如何提取网页指定内容

[复制链接]
发表于 2018-2-26 21:47:38 | 显示全部楼层 |阅读模式

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

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

x
想要抓取图中蓝字“新加坡驻华大使罗嘉良到访中新国际研究院”,即新闻的题目,该如何设置条件

我的答案是sel.xpath('//table[@id="newslist"]/tbody/tr[4]/td/table/tbody/tr/td[1]/a/font').extract(),但打印时无显示

问:1、该如何设置提取条件,抓取如图的1条新闻标题?
      2、如何通过for循环抓取该页面的14条新闻标题?

ps:该网页地址为http://news.scut.edu.cn/s/22/t/3/p/12/i/78/list.htm
最佳答案
2018-2-27 12:30:23
1519705773(1).png

如何提取新闻的标题

如何提取新闻的标题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-26 22:30:09 | 显示全部楼层
  1. data = html.xpath('//table[@class="columnStyle"]/tr/td/a')
  2. print(data)
  3. for each in data:
  4.     i = each.xpath('font/text()')[0]
  5.     print(i)
复制代码

其实有15条新闻。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-26 22:32:09 | 显示全部楼层
本帖最后由 jerryxjr1220 于 2018-2-26 22:34 编辑
  1. import requests
  2. from bs4 import BeautifulSoup as BS
  3. head = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko Core/1.53.4549.400 QQBrowser/9.7.12900.400'}
  4. res = requests.get('http://news.scut.edu.cn/s/22/t/3/p/12/i/78/list.htm', headers=head)
  5. bs = BS(res.text,"lxml")
  6. choose = bs.select("table[id='newslist'] tr td table tr td a font")
  7. for each in choose:
  8.     print(each.string)
复制代码

“全校师生感谢你们” 章熙春书记慰问春节期间坚守岗位的教职工
恭贺新春 华南理工大学推出拜年表情包
这个寒假很温暖 章熙春书记与留校学生代表共迎新春
王迎军校长会见科技部基础研究司郭志伟副司长一行
华南理工大学5项成果获高等学校科学研究优秀成果奖
新加坡驻华大使罗家良到访中新国际联合研究院
教育部部门决算和住房改革支出决算会审工作举行
校领导赴火车站慰问参加春运志愿服务的学生
送温暖 齐攻坚 学校各单位积极赴孔美村精准扶贫帮扶慰问
科技部高新技术发展及产业化司来华南理工大学调研
华南理工大学学生获国际企业管理挑战赛中国赛区总冠军
华南理工大学召开教育部重大攻关项目开题研讨会
喜报!华工学子梁小静室内田径亚锦赛强势夺冠
校领导率队赴云南云县调研指导精准扶贫工作
真情暖得夕阳红 章熙春书记看望慰问学校老领导
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-27 01:57:36 | 显示全部楼层
  1. import requests
  2. import re
  3. num = int(input('你想要爬几页:'))
  4. # 循环爬取的页数,使用倒序爬取(78,77,76...)
  5. for page in range(78, 78 - num, -1):
  6.     url = 'http://news.scut.edu.cn/s/22/t/3/p/12/i/' + str(page) + '/list.htm'
  7.     html = requests.get(url).text
  8.     # 正则匹配文章标题
  9.     titles = re.findall("color=''>(.*?)<", html)
  10.     # 正则匹配文章链接
  11.     links = re.findall("<td><a href='(.*?)'", html)
  12.     # 补完文章链接
  13.     new_links = ['http://news.scut.edu.cn' + i for i in links]
  14.     # 打印提示
  15.     print('-------------这是第%d页-------------' % (page))
  16.     # zip函数可同时对两个列表进行遍历
  17.     for m, n in zip(titles, new_links):
  18.         # 分别打印文章和链接
  19.         print(m, '\t\t', n)
复制代码

嗯,含注释,可翻页,不到20行,凑合着用吧
加群一起学习吧[Python基础/爬虫692-858-412,是一个Python语言学习小组,欢迎大牛进群接受指导。什么性能,什么语言,都是浮云。够简洁,就Python!]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-27 08:33:35 | 显示全部楼层

首先十分感谢回答!
然后想请问我的匹配是哪里出现问题了,sel.xpath('//table[@id="newslist"]/tbody/tr[4]/td/table/tbody/tr/td[1]/a/font').extract(),该定位xpath我是直接从chrom浏览器copy xpath得到的,也想不明白为什么定位不成功
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-27 08:36:47 | 显示全部楼层
jerryxjr1220 发表于 2018-2-26 22:32
“全校师生感谢你们” 章熙春书记慰问春节期间坚守岗位的教职工
恭贺新春 华南理工大学推出拜年表情包
...

首先十分感谢回答!
然后想请问我的匹配是哪里出现问题了,与您不一样的是,我使用scrapy来爬的,遇到的问题是定位不成功,sel.xpath('//table[@id="newslist"]/tbody/tr[4]/td/table/tbody/tr/td[1]/a/font').extract(),该定位xpath我是直接从chrom浏览器copy xpath得到的,也想不明白为什么定位不成功,如果可以,请问能告诉我的答案哪里错了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-27 08:44:42 | 显示全部楼层
EVAN_Yiu 发表于 2018-2-27 08:33
首先十分感谢回答!
然后想请问我的匹配是哪里出现问题了,sel.xpath('//table[@id="newslist"]/tbody/t ...
  1. data = html.xpath('//table[@id="newslist"]/tr[4]/td/table/tr/td/a/font/text()').extract()
复制代码

你用scrapy要这样子写才行匹配第五条条新闻。
不能加那两个 tbody。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-27 08:55:48 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-27 08:44
你用scrapy要这样子写才行匹配第五条条新闻。
不能加那两个 tbody。

十分感谢!
虽然不知道为什么要这么做,但请问这是属于哪方面的知识?我想查找相关资料学习,正在学习爬虫,不知道的东西太多了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-27 09:02:11 | 显示全部楼层
EVAN_Yiu 发表于 2018-2-27 08:55
十分感谢!
虽然不知道为什么要这么做,但请问这是属于哪方面的知识?我想查找相关资料学习, ...

一步步调试出来的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-27 12:27:49 | 显示全部楼层
tbody是网页表格的主体部分,应该不需要纳入爬取标签的选项,个人感觉。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-27 12:30:23 | 显示全部楼层    本楼为最佳答案   
1519705773(1).png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-27 12:30:58 | 显示全部楼层
本帖最后由 JAY饭 于 2018-2-27 12:33 编辑

卡了下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-27 15:04:03 | 显示全部楼层

十分感谢回答,明白了!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-8 00:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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