因此,通过以下im将网页中的脚本添加到dict中,然后尝试在其中查找某个字符串,然后获取后面的13个字母:
for link in productlinks:
try:
s = HTMLSession()
r = s.get(link)
response = urllib3.PoolManager().request(
"GET", link, headers={'User-Agent': "python"})
soup = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
title = r.html.find('h1.rd-title', first=True).text
script2 = []
script1 = soup.findAll("script")[2]
script2.append(script1)
special_string = '"ean",values:[{text:"'
x_letters_afterwards = 13
result = re.findall(re.escape(special_string) + ".{" + x_letters_afterwards + "}", script2)
print(result)
except:
print("...")
问题是for循环try似乎通过某个东西中断为一个except,因为它总是打印“…”而不是我试图提取的字符串(或者一般的其他东西)
应在其中找到字符串的输出示例:https://pastebin.com/xvzQ456P
我不知道该怎么办
您的
script2
是一个对象列表。您需要获取字符串并将其传递给re
方法但是,您正在使用
re.findall
来获取匹配项的列表。您只需使用re.search
即可获得第一个匹配项:注:
re.escape(special_string)
-re.escape
在special_string
字符串中的每个特殊正则表达式字符之前追加一个\
转义符,该字符串在正则表达式中使用"(.{" + x_letters_afterwards + "})"
将形成一个捕获组(ID=1),该组看起来像(.{13})
,并且将捕获除换行符以外的任何13个字符,并将其放入组1if match:
检查match.group(1)
中的组1值被分配给result
李>相关问题 更多 >
编程相关推荐