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 1
|
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 2014-05-25 14:20:20 +08:00 via Android
@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
福音
|