хотя класс такой на странице есть и прогружается он сразу
wss://data.tradingview.com/socket.io/websocket?from=symbols%2FBTCUSD%2F&date=2021_05_06-10_12
import requests
import json
import re
r = requests.get('https://aliexpress.ru/item/4000985692469.html')
script = json.loads(re.search(r'{"actionModule.+}}', r.text).group())
goods = script['skuModule']['skuPriceList']
for good in goods:
name = good['skuAttr'].split('#')[-1]
price = good['skuVal']['skuActivityAmount']['formatedAmount']
print(name, price)
lastNewsItem = news[0].text
if (lastNewsItem != news[0].text):
# Присваиваем переменной lastNewItem последнюю новость
# ...
# Если поледняя новость не равна lastNewItem
нужна задержка чтобы сайт прогрузился
import requests
import re
import os
#...
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
documents = driver.find_elements_by_class_name("docext-container")
for document in documents:
# тут ищем родительский элемент, в нем есть нужный нам ID
document_id = document.find_element_by_xpath('..').get_attribute('data-documentation-id')
# в пейлод вписываем нужные данные от формы, и вставляем наш ID
payload='cr_documentation_action=download&documentation_id={}&email='.format(document_id)
# url для запроса - текущая страница
# ставим обязательно stream=True, чтобы файл не выкачивался сразу
r = requests.post(driver.current_url, headers=headers, data=payload, stream=True)
# название файлов всегда есть в заголовках запроса, response.headers
# поэтому берем их, видим в нужном ключе "attachment; filename*=UTF-8''hlw-shiptsy-ortodonticheskie-reg.pdf"
# ну и недолго думая дергаем регуляркой
document_name = re.search(r'\'\'(.+?\.pdf)', r.headers['Content-Disposition']).group(1)
# дальше уже нужно проверить наличие файла в папке
# я так понял путь до папки с загрузками в переменной path_registration_documents, так что:
if document_name in os.listdir(path_registration_documents):
print('Не новый')
else:
print('Новый док')
document.click()
<a>
, по строке внутри тега, по аттрибутамfrom bs4 import BeautifulSoup
from lxml import html
html_code = '''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a href="qna.habr.com">qna</a>
<div id="main">
<a href="habr.com" target="_blank">example</a>
<a href="career.habr.com">career</a>
</div>
<a href="freelance.habr.com">freelance</a>
</body>
</html>
'''
soup = BeautifulSoup(html_code, 'html.parser')
tree = html.fromstring(html_code)
# xpath
element = tree.xpath('/html/body/div/a[1]')[0]
print(element.get('href'))
# from parent
element = soup.find('div', id='main').find('a')
print(element.get('href'))
# index
element = soup.find_all('a')[1]
print(element.get('href'))
# string
element = soup.find('a', string='example')
print(element.get('href'))
# attrs
element = soup.find('a', target='_blank')
print(element.get('href'))
парсер в цикле не обновляет полученный результат, а остается та же информация
for i in range(2):
?for i in range(2):
html = get_html(URL)
output = get_content(html.text)
print('\n' + output + ' ' + str(i))
if i == 1:
break
time.sleep(10)
import requests
import json
import re
headers = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'}
r = requests.get('https://www.instagram.com/p/CKJ4986gdbW/', headers=headers)
script = re.search(r'window._sharedData = (.+?);</script>', r.text).group(1)
data = json.loads(script)
edges = data['entry_data']['PostPage'][0]['graphql']['shortcode_media']['edge_media_to_parent_comment']['edges']
for edge in edges:
text = edge['node']['text']
author = edge['node']['owner']['username']
print(author, text)