鱼C论坛

 找回密码
 立即注册
查看: 1206|回复: 2

用xpath无法抽取text的内容

[复制链接]
发表于 2019-5-19 12:17:33 | 显示全部楼层 |阅读模式

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

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

x
使用xpath抽取贴吧的评论,但是运行代码后发现打印出了网页的信息,并没有单独抽取出评论信息。求大神指点。

代码如下:
import urllib.request, urllib.parse, urllib.robotparser
import re, sys, itertools, os, scrapy
from lxml import etree

def url_open(url):
        req = urllib.request.Request(url)
        req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64; rv:66.0) Gecko/20100101 Firefox/66.0')
        response = urllib.request.urlopen(url)
        html = response.read().decode('utf-8')
       
        return html
       

def get_comment(html):
        # p = r'(?:(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])\.{3}(?:[0,1]?\d?\d|2[0-4]\d|25[0-5]))'        
        # iplist = re.findall(p, html)
       
        #sel = scrapy.selector.Selector(html)
        #comment = sel.xpath('//*[@id="root"]/div/div[3]/div/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[1]/div[*]/div[2]/text()').extract()  
        html2 = etree.parse(html, etree.HTMLParser())
       
        comment = html2.xpath('//*[@id="post_content_125598406716"]/text()').extract()                
        print(comment)       
       


if __name__ == '__main__':
        url = "https://tieba.baidu.com/p/6130814835"
        get_comment(url_open(url))

运行结果如下:
Traceback (most recent call last):
  File ".\csdl.py", line 29, in <module>
    get_comment(url_open(url))
  File ".\csdl.py", line 20, in get_comment
    html2 = etree.parse(html, etree.HTMLParser())
  File "src\lxml\etree.pyx", line 3435, in lxml.etree.parse
  File "src\lxml\parser.pxi", line 1840, in lxml.etree._parseDocument
  File "src\lxml\parser.pxi", line 1866, in lxml.etree._parseDocumentFromURL
  File "src\lxml\parser.pxi", line 1770, in lxml.etree._parseDocFromFile
  File "src\lxml\parser.pxi", line 1163, in lxml.etree._BaseParser._parseDocFromFile
  File "src\lxml\parser.pxi", line 601, in lxml.etree._ParserContext._handleParseResultDoc
  File "src\lxml\parser.pxi", line 711, in lxml.etree._handleParseResult
  File "src\lxml\parser.pxi", line 638, in lxml.etree._raiseParseError
OSError: Error reading file '
<!DOCTYPE html><!--STATUS OK--><html><head><meta name="keywords" content="百度贴吧,终极斗罗噗,套开,始被"/><meta name="description" content="噗,龙套开始被抛弃了..噗,龙套开始被抛弃了,好惨两男的哈哈哈冰天梁:我还是有价值的唐雨格出来后冰天梁:你们六个别抛弃我啊" /><meta charset="UTF-8"><meta furl="tieba.baidu.com/f?kw=%E7%BB%88%E6%9E%81%E6%96%97%E7%BD%97&ie=utf-8" fname="终极斗罗"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="baidu-site-verification" content="jpBCrwX689" /><link rel="search" type="application/opensearchdescription+xml" href="/tb/cms/content-search.xml" title="百度贴吧" /><title>噗,龙套开始被抛弃了,好惨
....后面为页面的代码信息此处省略。

求指点!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-5-19 22:34:23 | 显示全部楼层
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-19 22:35:00 | 显示全部楼层
  1. import urllib.request , re
  2. from lxml import etree

  3. def url_open(url):
  4.     req = urllib.request.Request(url)
  5.     req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:66.0) Gecko/20100101 Firefox/66.0')
  6.     response = urllib.request.urlopen(url)
  7.     html = response.read().decode('utf-8')
  8.     get_comment(html)

  9. def get_comment(html):
  10.     tree = etree.HTML(html)
  11.     results= tree.xpath('//div[starts-with(@id,"post_content_")]/text()')
  12.     #print(s)
  13.     for result in results:
  14.         print(result.strip())
  15. if __name__ == '__main__':
  16.         url = "https://tieba.baidu.com/p/6130814835"
  17.         url_open(url)

  18. '''
  19. 噗,龙套开始被抛弃了,好惨两男的哈哈哈

  20. 冰天梁:我还是有价值的
  21. 唐雨格出来后
  22. 冰天梁:你们六个别抛弃我啊
  23. 都是万里挑一进的史莱克,然而居然没戏份了??
  24. 前期的垫子不都这样吗

  25. 工具人wwwww
  26. 用饭圈的话来说,冰天梁好惨一男的
  27. '''
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-15 22:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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