鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Java  Python  網(wǎng)絡(luò)安全/ 使用xpath爬取網(wǎng)站的文字描述,在chrome中有用,但是在代碼中就沒有用了

使用xpath爬取網(wǎng)站的文字描述,在chrome中有用,但是在代碼中就沒有用了

問題描述:

我想爬取電影網(wǎng)站的描述信息,一開始用的是正則,但是不是很熟練,就用了xpath,xpath在chrome中可以使用,但是放到代碼里就失效了,我用了自己寫的xpath還有chrome獲取的xpath(沒有tbody的問題)都沒有用。

(以 http://www.ygdy8.com/html/gnd... 為例)
我想要爬取的是以下文字信息:

clipboard.png

代碼(一部分):

def getContent(url):
    html = ulr.urlopen('http://www.ygdy8.net%s' %url).read()
    con_text = html.decode('gb2312', 'ignore')
    data = etree.HTML(con_text)
    
    #reg = r'<div class="co_content8">(.+?)<p><strong><font color="#ff0000" size="4">'
    #reg = r'◎簡  介 <br /><br />(.*?)<br />'
    #text = re.compile(reg).findall(con_text)
    #text = data.xpath('//*[@id="Zoom"]/span/p[1]/text()')  #chrome瀏覽器中獲取
    #text = data.xpath('//div[@id="Zoom"]/span/p/text()')   #自己嘗試的
    #text = data.xpath('/html/body/div/div/div[@class="bd2"]/div[@class="bd3"]/div[@class="bd3r"]/div[@class="co_area2"]/div[@class="co_content8"]/ul/div[@align="left"]/div[@id="Zoom"]/span/p/text()')   #從根目錄處開始嘗試查找
    
    if text:
        text = text[0]
    reg = r'<td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href="(.+?)"'
    link = re.findall(reg,con_text)[0]
    return text,link
    

注釋的地方就是有問題的地方

執(zhí)行結(jié)果:

在chrome瀏覽器中使用xpath:
clipboard.png

在代碼中使用xpath:

clipboard.png

嘗試過直接獲取所有p標(biāo)簽以下的內(nèi)容,發(fā)現(xiàn)前面的一些文字可以獲取,但是想要的信息獲取不到。

clipboard.png

請問該如何實現(xiàn)爬取想要的信息,xpath和正則分別應(yīng)該怎么寫呢?

并且:

clipboard.png

對于這種已經(jīng)轉(zhuǎn)換為html信息的輸出具體有什么意思

回答
編輯回答
挽青絲

你要看一下頁面內(nèi)容是不是動態(tài)加載的,瀏覽器里那是已經(jīng) js 加載過的了。

2017年4月17日 03:33
編輯回答
不討喜

把html內(nèi)容保存成文件,再用瀏覽器打開。如果有想要的內(nèi)容,檢查xpath;如果沒有,可能被服務(wù)器反爬蟲了。

2017年7月14日 03:21
編輯回答
舊言
import requests
from lxml import etree

response = requests.get('http://www.ygdy8.com/html/gndy/dyzz/20170802/54644.html')
htmlStr = response.content.decode('gbk')
tree = etree.HTML(htmlStr)
info = tree.xpath('string(//div[@id="Zoom"]//p[1])')

print(info)

圖片描述

2018年3月16日 22:23