найти элемент на html странице по идентификатору через python из переменной - PullRequest
1 голос
/ 18 марта 2019

ребята, я пишу код для извлечения некоторых данных с моего сайта путем поиска идентификатора элемента и получаю идентификатор записи из моей базы данных и сохраняю в переменную, но она просто возвращает None !!!

это HTML-коды: и я получаю идентификатор записи из db как int 18448, но я должен создать истинный формат для идентификатора html, например, post-18448

<article class="post-18448 post type-post status-publish format-standard hentry category-tv-shows" id="post-18448">

и код Python:

import mysql.connector
from bs4 import BeautifulSoup as wsoup
from urllib.request import urlopen as wreq


lucas_db = mysql.connector.connect(
    host='localhost',
    user="root",
    password="xxxxxxxxxxx",
    database="Lucas_database")

mycursor_mov = lucas_db.cursor()
mycursor_mov.execute(
    "SELECT Post_ID FROM Lucas_t_db WHERE Post_ID IS NOT NULL AND Post_status IS NOT NULL ORDER BY Published_Time ASC ") #AND Post_ID IS NOT NULL AND Post_status IS NULL ")
myresult_mov = mycursor_mov.fetchall()

myresult_mov = [a[0] for a in myresult_mov]

print("DB post id query:",myresult_mov[-1:]

id_value = myresult_mov[-1:]

me = str(id_value[0])

print("none braket post id",me)

z = '"post-'+me+'"'
print("true fromat id: ",z)

url = "http://ezddl.com/"

url_req = wreq(url)
page_read = url_req.read()
url_req.close()

page_soup = wsoup(page_read, "html.parser")

Entry = page_soup.main.find('article',{"id":z})

print("extracted data",Entry)

результат кода:

DB post id query: [18448]
none braket post id: 18448
true fromat id:  "post-18448"
extracted data:  None

***Repl Closed***

но когда я устанавливаю переменную z, как это z="post-18448", результат кода верен !!!! :

*same codes*


z ="post-18448"

Entry = page_soup.main.find('article',{"id":z})

print("extracted data: ",Entry)

Результат нового кода:

DB post id query: [18448]
none braket post id: 18448
true fromat id:  "post-18448"
extracted data:  <article class="post-18448 post type-post status-publish format-standard hentry category-tv-shows" id="post-18448">

***Repl Closed***

Я не могу понять, почему, когда я запускаю первый код, он дает мне none, но второй код дает мне истинный результат

1 Ответ

3 голосов
/ 18 марта 2019

Элемент id - это не "post-18448", а post-18448. В первом примере вы произвольно добавляете двойные кавычки в строку, по которой вы подходите. Когда вы определяете это вручную, вы удаляете их.

Бросьте двойные кавычки из вашей настройки z:

z = 'post-'+me
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...