2017-03-26 7 views
0

なんらかの理由で、Pythonライブラリの '要求'を使用すると、GET要求にwebsiteのhtmlコードが要求されます。完全なHTMLコードは返されません。リクエストでGETをリクエストするときに完全なhtmlコードを取得できない理由

何が起こっていますか?

import re 
import requests 

url = 'https://www.aliexpress.com/item/Dragon-Ball-Z-Mug-SON-Goku-Mug-Hot-Changing-Color-Cups-Heat-Reactive-Mugs-and-Cups/32649664569.html' 

mess = requests.get(url) 

print(mess.text, '\n', '_'*20) 

approved = [] 
images = re.findall(r'(?<=src=")[a-zA-Z0-9 \/\\,._-]+(?=")', mess.text) 

for image in images: 
    print(image) 
    base, ext = image.rsplit('.', 1) 

    if ext == 'png' or ext == 'jpg' or ext == 'JPG': 
     approved.append(image) 

出力:


//u.alicdn.com/js/aplus_ae.js 
//i.alicdn.com/ae-header/20170208145626/buyer/front/ae-header.js 

この写真がjpgである属性 'SRC' と 'IMG' タグが存在することを示しています。しかし何らかの理由で、出力には取り込まれません。 HTMLコンテンツから要素を取得するために

+0

[HTMLを解析するために正規表現を使用しない](http://stackoverflow.com/a/1732454/2482744) BeautifulSoupを使用してください。 –

+0

多くの(ほとんどの?)現代のウェブサイトには、Javascript経由でオンザフライで生成される動的コンテンツが含まれています。このコンテンツは 'GET'リクエストに対する応答では利用できません。このような状況に遭遇している可能性があります。 – larsks

+0

@larsksで解決するべきことは何ですか? –

答えて

0

、などlxmlの、BeautifulSoup、として利用できる非常に洗練されたモジュール

があるあなたは速いのようなBeautifulSoup何かよりも桁違いであるこれを達成するためにlxmlのを使用することができますこの:

['https://ae01.alicdn.com/kf/HTB16NR_MpXXXXa5XpXXq6xXFXXX0/Dragon-Ball-Z-Mug-SON-Goku-Mug-Hot-Changing-Color-Cups-Heat-Reactive-Mugs-and-Cups.jpg_640x640.jpg'] 

from lxml import html 
import requests 

url = 'https://www.aliexpress.com/item/Dragon-Ball-Z-Mug-SON-Goku-Mug-Hot-Changing-Color-Cups-Heat-Reactive-Mugs-and-Cups/32649664569.html' 

mess = requests.get(url).content 

root = html.fromstring(mess) 
print(root.xpath('//a[@class="ui-image-viewer-thumb-frame"]/img/@src')) 

これはになります

Ypuはさらなる調査のために​​を参照することができます。

+0

1.「html.fromstring()」とは何ですか? 2. xpathを使用して特定のimgを検索する代わりに、代わりにすべてのimgタグを検索できますか? –

+0

はい、 'root.xpath( '// img/@ src')'です。ドキュメントを読むことをお勧めします。 –

関連する問題