可以试一试其他的,例如正则或者beautifulsoup
Python2 xpath 层次关系 中间层数不定能不能通配
python 2.7.13, lxml是我命令行安装的应该就是最新了。
我想爬某个论坛里的动画种子,大体思路:
(1)打开 http://bbs.opfans.org/forum.php?mod=forumdisplay&fid=37 会有1个表,读每项的链接。
(2)再打开每1项,进入寻找 torrent 的链接。
经观察,需要的链接是在 ignore_js_op 以下的 a 里,但是中间具体夹了几层不一定,外面的层次关系也不一定,所以我就寻找 ignore_js_op 。
之前匹配不到的原因找到了,经实验发现1个通配符只能配1层。如果是中间层数不定的情况能不能通配?
(对于这个例子我用的是contains()和and,参照http://python.jobbole.com/84689/?utm_source=group.jobbole.com&utm_medium=relatedArticles)
代码:
# -*- coding:utf-8 -*-
import urllib, re, urllib2, lxml
from lxml import etree
'''
Download ONE PIECE torrent.
'''
def getHtml(url):
page = urllib.urlopen(url)
html = page.read().decode('gbk')
#print page.info()
page.close()
return html
HostName = r'http://bbs.opfans.org/'
Html1 = getHtml(HostName + r"forum.php?mod=forumdisplay&fid=37")
Xpath1 = r'//body/div/div/div/div/div/div/form/table/tbody/tr/th/a/@href'
Xpath2 = r'//ignore_js_op/*/a[@href]'
Content1 = etree.HTML(Html1).xpath(Xpath1)
for Line1 in Content1:
if re.match(r'forum\.php.+', Line1):
NewLink = HostName + Line1
print NewLink
Html2 = getHtml(NewLink)
Content2 = etree.HTML(Html2).xpath(Xpath2)
for Line2 in Content2:
print HostName + Line2.xpath(r'./@href')[0]
print Line2.xpath(r'./text()')[0]
结果:
http://bbs.opfans.org/forum.php?mod=viewthread&tid=93&extra=page%3D1
http://bbs.opfans.org/forum.php?mod=viewthread&tid=39&extra=page%3D1
http://bbs.opfans.org/forum.php?mod=viewthread&tid=3939&extra=page%3D1
http://bbs.opfans.org/forum.php?mod=attachment&aid=MjYwMXxlNWUyZjMwZHwxNTExODU1ODA3fDB8MzkzOQ%3D%3D
[OPFansMaplesnow][One_Piece][815][MP4].torrent
http://bbs.opfans.org/forum.php?mod=redirect&tid=3939&goto=lastpost#lastpost
http://bbs.opfans.org/forum.php?mod=viewthread&tid=3938&extra=page%3D1
http://bbs.opfans.org/forum.php?mod=redirect&tid=3938&goto=lastpost#lastpost
http://bbs.opfans.org/forum.php?mod=viewthread&tid=3936&extra=page%3D1
http://bbs.opfans.org/forum.php?mod=attachment&aid=MjU5OXxlYmNlYzc3ZXwxNTExODU1ODA3fDB8MzkzNg%3D%3D
[OPFansMaplesnow][One_Piece][814][MP4].torrent
http://bbs.opfans.org/forum.php?mod=viewthread&tid=3935&extra=page%3D1
- 点赞
- 写回答
- 关注问题
- 收藏
- 复制链接分享
- 邀请回答
1条回答
为你推荐
- python xpath对孙节点内容进行匹配问题
- python
- 1个回答
- 爬虫初学者的坑,关于xpath爬取的列表为空
- 请教python xpath抓取数据问题
- python
- 2个回答
- 关于使用xpath解析数据返回空列表
- python
- 1个回答
- 在 python scrapy爬虫框架:response.xpath()的返回值是[ ],这个怎么解决?
- python
- 4个回答
- 关于Python 网络数据爬虫爬取不到数据
- python
- 1个回答
- xpath提取B站的点赞数,提取不到数值是怎么回事?
- python
- 1个回答
- python 爬取表格 获取不到数据
- python
- 4个回答
- python xpath 如何定位红框内的内容?该内容经常变化
- python
- 3个回答
- 使用PHP / xpath解析SOAP响应 - 不能超过一个节点
- soap
- php
- xpath
- 1个回答
- 在PHP中使用substr()不能处理xpath结果
- php
- xpath
- substr
- 1个回答
- 关于python爬虫利用正则表达式爬取不到内容的问题
- 为什么XPath找不到标签?
- python爬虫中用xpath总是获取不到内容,希望大家帮我看看这两个网页中所需内容如何定位?谢谢~
- python
- 2个回答
- 为什么xpath()方法就提取不了a标签中的href属性内容呢?
- python3中使用xpath无法定位,为什么一直返回空列表?
- python 使用selector.xpath来爬取天猫数据,爬不了月销量
- python
- 天猫
- 数据
- 1个回答
- python3.7爬虫 使用 selector.xpath('')爬取-线上等
- python
- 正则
- 2个回答
- Selenium 模拟浏览器xpath取值问题
- 使用xpath匹配的结果却为空?
- xpath helper
- xpath
- python
- 4个回答