
1 nervouna 2014-04-18 11:56:41 +08:00 你确定你只要 title?这算是抓取网页里最简单的一件事了吧…… Google Beautiful Soup |
2 ericls 2014-04-18 12:20:34 +08:00 via Android 手机打一个 from pyquery import PyQuery as pq d=py(url) d('title').text 不知道对不对 |
3 fay 2014-04-18 12:27:19 +08:00 我在开发自己的莲蓬网的时候,需要获取网页标题等信息,顺手抽离了这部分的代码: https://github.com/fay/pagemeta |
4 tonghuashuai 2014-04-18 13:06:42 +08:00 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 import urllib 5 import re 6 7 8 def get_title(url): 9 title = '' 10 c = urllib.urlopen(url) 11 html = c.read() 12 13 p = '<title>.*?</title>' 14 target = re.findall(p, html) 15 16 if target: 17 title = target[0] 18 19 return title 20 21 if __name__ == '__main__': 22 url = 'http://www.baidu.com' 23 title = get_title(url) 24 print title 简单实现,没加异常处理 |
5 tonghuashuai 2014-04-18 13:07:01 +08:00 行号杯具了 |
6 davidli 2014-04-18 15:07:28 +08:00 楼上正解 网站的标题应该都是在<title></title>里吧。 |
7 yhf 2014-04-18 15:24:56 +08:00 via iPhone BeautifulSoup 随便哪个节点由你抓 |
8 lifemaxer 2014-04-18 15:31:30 +08:00 以当前页为例, soup = BeautifulSoup(content) #content为当前页数据 a = soup.find_all('title')[0].get_text() |
9 hao1032 OP |
10 hao1032 OP @tonghuashuai 这个在实际应用中会出错的,获取的title编码不知道是什么,还要获取网页里面的charset,然后解码。 更恶心的是网页中写的charset又不一定是正确的(就遇到过这样的奇葩网站),然后用charset去解又会出错。 |
12 lm902 2014-04-19 10:03:58 +08:00 text.split("<title>")[1].split("</title>")[0] |
13 kehr 2014-04-20 10:00:38 +08:00 |
14 hao1032 OP @kehr 使用bs4,用的就是你发到链接里面的例子。 soup.title.string # u'The Dormouse's story' 在用的过程中还是遇到乱码了,就是用这个方法获取这个网址的title是乱码,不知有解不? http://www.joy.cn/ |
15 cloverstd 2014-05-25 00:55:03 +08:00 乱码可能是 gzip 压缩了 |
17 caomu 2014-05-25 01:14:37 +08:00 1.网上有类似的服务吗? > 关于这个我想到的是 YQL 。。。 |
18 Sylv 2014-05-25 04:40:08 +08:00 @hao1032 import requests from bs4 import BeautifulSoup r = requests.get("http://www.joy.cn") r.encoding = requests.utils.get_encodings_from_content(r.content)[0] soup = BeautifulSoup(r.text) print soup.title.string 参考: http://liguangming.com/python-requests-ge-encoding-from-headers |
19 ccbikai PRO @Sylv 18楼和我的方法一样,如果乱码最后一句改print soup.title.get_text() |
20 dbow 2014-05-25 18:26:01 +08:00 上lxml用XPATH表达式最快,"html/head/title" 即 from lxml import etree etree.HTML(content).xpath("/html/head/title")[0] |
22 hao1032 OP @Sylv 这个要加个import,我看了这个文章http://www.cnblogs.com/todoit/archive/2013/04/08/3008513.html 加了个from_encoding="gb18030",测试这个网站是可以的。 如果后面有问题,再使用你的这个方法。 |
23 xiaowangge 2014-09-05 17:17:29 +08:00 #!/usr/bin/env python # -*- coding: utf-8 -*- import requests from lxml import html respOnse= requests.get('http://www.joy.cn/') # Parse the body into a tree parsed_body = html.fromstring(response.text) print ''.join(parsed_body.xpath('//title/text()')) |
24 funnybunny00 2017-08-30 17:21:12 +08:00 福音 |