python3 用BeautifulSoup 爬取指定ul下的a标签

python3 用BeautifulSoup 爬取指定ul下的a标签,第1张

用select('ul 的 css 路径')find_all()

css路径直接用浏览器开发视图,从ul复制就好,当然也可以把前面多余的部分删掉

关键在于查找时间的正则表达式,也就是程序中reg变量的字符串,你可以去了解一下

import re

s = """<a class="time" target="_blank" href="">昨天 00:26</a>

<a class="time" target="_blank" href="">今天 00:26</a>"""

def getTime(html):

   reg = r'<a class="time">()</a>'

   timere = recompile(reg)

   timelist = refindall(timere,html)

   for t in timelist:

       print t

       

getTime(s)

使用时先安装 lxml 包

开始使用 #

和beautifulsoup类似,首先我们需要得到一个文档树

把文本转换成一个文档树对象

from lxml import etreeif __name__ == '__main__':doc='''

把文件转换成一个文档树对象

fromlxmlimportetree# 读取外部文件 indexhtmlhtml = etreeparse('/indexhtml')result = etreetostring(html, pretty_print=True)#pretty_print=True 会格式化输出print(result)

均会打印出文档内容

节点元素、属性、内容 #

xpath 的思想是通过 路径表达 去寻找节点。节点包括元素,属性,和内容

元素举例

html --->div --->

这里我们可以看到,这里的元素和html中的标签一个意思。单独的元素是无法表达一个路径的,所以单独的元素不能独立使用

路径表达式 #

/  根节点,节点分隔符,//  任意位置  当前节点  父级节点@  属性

通配符 #

  任意元素@  任意属性node()  任意子节点(元素,属性,内容)

谓语 #

使用中括号来限定元素,称为谓语

//a[n] n为大于零的整数,代表子元素排在第n个位置的 元素//a[last()]  last()  代表子元素排在最后个位置的 元素//a[last()-]  和上面同理,代表倒数第二个//a[position()<3] 位置序号小于3,也就是前两个,这里我们可以看出xpath中的序列是从1开始//a[@href]    拥有href的 元素//a[@href='内置很多函数。更多函数查看 >

首先你这个代码在我这里运行是ok的。

Expires: Tue, 27 Jan 2015 03:56:41 GMT

Date: Tue, 27 Jan 2015 03:55:21 GMT

Server: nginx

Content-Type: text/html; charset=GBK

Vary: Accept-Encoding,User-Agent,Accept

Cache-Control: max-age=80

X-Via: 11 czdx88:8105 (Cdn Cache Server V20), 11 dagang20:0 (Cdn Cache Server V20)

Connection: close

这个应该是请求错误,有多个可能:

1。你没有连接到网络上,无法访问这个地址

2。你使用了代理

3 你一段时间内访问的太频繁,被对方的服务器拉入了黑名单。

你可以按照自己的情况排查一下。

如果解决了您的问题请采纳!

如果未解决请继续追问!

以上就是关于python3 用BeautifulSoup 爬取指定ul下的a标签全部的内容,包括:python3 用BeautifulSoup 爬取指定ul下的a标签、python用re.findall获取网页全部符合要求的元素、python使用xpath(超详细)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10150078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存