当GET请求请求

时间:2017-03-26 14:15:47

标签: python python-requests

出于某种原因,当我使用python库'请求时,要GET请求website的html代码。它没有返回完整的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

这张照片显示有一个&#39; img&#39;标记属性&#39; src&#39;这是一个jpg。但由于某种原因,它没有在输出中捕获。

1 个答案:

答案 0 :(得分:0)

要从html内容中获取元素,可以使用非常复杂的模块,例如lxml,BeautifulSoup等。

您可以使用 lxml 来实现这一目标,这比 BeautifulSoup 快一个数量级:

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'))

这将导致:

['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']

Ypu可以参考documentation here进行更多探索。