Python请求返回无法理解的内容

7vux5j2d  于 2023-01-16  发布在  Python
关注(0)|答案(2)|浏览(144)

我正在尝试解析这个站点。我不想使用selenium。请求正在处理。但是!奇怪的事情发生了。我不能用正则表达式剪切我需要的文本(它就在那里-a如果你打印(data.text),你就可以看到它)。但是re看不到他。如果这个文本被复制到notepad++,它会输出这个--它把这些字符看作一行。

import requests
import re

data = requests.get('https://ru.runetki3.com/?page=1')

print(data.text)

它是什么以及如何使用它?pay attention to the line numbers

carvr3hs

carvr3hs1#

您可以尝试使用他们的Ajax API加载所有用户名+缩略图:

import pandas as pd
import requests

url = 'https://ru.runetki3.com/tools/listing_v3.php?livetab=female&offset=0&limit={}'

headers = {'X-Requested-With': 'XMLHttpRequest'}

all_data = []
for p in range(1, 4):  # <-- increase number of pages here
    data = requests.get(url.format(p * 144), headers=headers).json()
    for m in data['models']:
        all_data.append((m['username'], m['display_name'], m['thumb_image'].replace('{ext}', 'jpg')))

df = pd.DataFrame(all_data, columns=['username', 'display_name', 'thumb'])
print(df.head())

图纸:

username  display_name                                                  thumb
0     wetlilu   Little_Lilu  //i.bimbolive.com/live/034/263/131/xbig_lq/c30823.jpg
1  mellannie8  mellannieSEX  //i.bimbolive.com/live/034/24f/209/xbig_lq/314348.jpg
2    mokkoann      mokkoann  //i.bimbolive.com/live/034/270/279/xbig_lq/cb25cb.jpg
3    ogurezzi  CynEp-nuCbka  //i.bimbolive.com/live/034/269/02c/xbig_lq/3ebe2a.jpg
4   Pepetka22     _-Katya-_  //i.bimbolive.com/live/034/24f/36e/xbig_lq/18da8e.jpg
gijlo24d

gijlo24d2#

避免在正则表达式中使用.,除非您确实想获得任何字符;在这里,用户名(就我所见)只包含-和字母数字字符,因此您可以使用以下命令检索它们:

re.findall(r'"username":"([\w|-]+)"',data.text)

一种更简单的方法,通过获取除"之外的所有字符,消除了处理特殊字符的需要,该方法是:

re.findall(r'"username":"([^"]+)"',data.text)

所以这里有一个方法可以得到你想要的信息(我把它们加入了一个字典,但是你可以把它改成你喜欢的任何东西):

import requests
import re

data = requests.get('https://ru.runetki3.com/?page=1')
with open ("return.txt",'w', encoding = 'utf-8') as f:
    f.write(data.text)

names = re.findall(r'"username":"([^"]+)"',data.text)
disp_names = re.findall(r'"display_name":"([^"]+)"',data.text)
thumbs = re.findall(r'"thumb_image":"([^"]+)"',data.text)

names_dict = {name:[disp, thumb.replace('{ext}', 'jpg')] for name, disp, thumb in zip(names, disp_names, thumbs)}

示例

names_dict['JuliaCute']
# ['_Cute',
#  '\\/\\/i.bimbolive.com\\/live\\/055\\/2b0\\/15d\\/xbig_lq\\/d89ef4.jpg']

相关问题