Как очистить тег под тегом javascript?

Я хочу наскрести информацию о продукте с этого веб-сайта: http://megabuy.vn/Default.aspx .

Мое решение состоит в том, чтобы очистить сайт в соответствии со структурой сайта. Поэтому сначала я должен соскрести все ссылки об общей категории, прежде чем перейти к подкатегории, а затем к каждому конкретному продукту.

У меня есть проблемы соскоб все ссылки общие категории, как:

  • тиет Би Ван Фонг
  • may hut am
  • do da dung nha bep

так далее…

Я думаю, что проблема в том, что эти ссылки находятся под тегом Java script.

Вот мой код:

from bs4 import BeautifulSoup
import requests
import re
def web_scrape(url):
    web_connect = requests.get(url)
    text = web_connect.text
    soup = BeautifulSoup(text,"html.parser")
    return soup
homepage = web_scrape("http://megabuy.vn/Default.aspx")
listgianhang = homepage.findAll("a", class_=re.compile("ContentPlaceholder"))
len(listgianhang)

Я получил результат: 0

1 ответ

  1. import requests, bs4, re
    
    r = requests.get('http://megabuy.vn/Default.aspx')
    
    soup = bs4.BeautifulSoup(r.text, 'lxml')
    table = soup.find(id='ctl00_ContentPlaceHolder1_TopMenu1_dlMenu')
    for a in table('a',href=re.compile(r'^http')):
        link = a.get('href')
        text = a.text
        print(link, text)
    

    из:

    http://megabuy.vn/gian-hang/thiet-bi-van-phong THIẾT BỊ VĂN PHÒNG
    http://megabuy.vn/gian-hang/may-fax  Máy Fax
    http://megabuy.vn/gian-hang/may-fax/hsx/Panasonic Panasonic
    http://megabuy.vn/gian-hang/may-chieu-man-chieu-phu-kien  Máy chiếu Màn chiếu Phụ kiện
    http://megabuy.vn/gian-hang/may-chieu-projector  Máy chiếu projector
    http://megabuy.vn/gian-hang/may-chieu-projector/hsx/Optoma Optoma
    http://megabuy.vn/gian-hang/may-chieu-projector/hsx/Sony Sony
    http://megabuy.vn/gian-hang/may-chieu-projector/hsx/ViewSonic ViewSonic
    http://megabuy.vn/gian-hang/may-chieu-man-chieu-phu-kien  Xem thêm
    http://megabuy.vn/gian-hang/may-photocopy  Máy photocopy
    http://megabuy.vn/gian-hang/may-photocopy-  Máy photocopy 
    http://megabuy.vn/gian-hang/may-photocopy-/hsx/Canon Canon
    http://megabuy.vn/gian-hang/may-photocopy-/hsx/Ricoh Ricoh
    

    Причина, по которой вы не можете получить тег по классу, заключается в том, что класс тега генерируется JavaScript, необработанный html-код выглядит следующим образом:

                 <a href="http://megabuy.vn/gian-hang/thiet-bi-van-phong" style="text-decoration:none;">
                  <h2>
                   THIẾT BỊ VĂN PHÒNG
                  </h2>
    

    Реальный код не содержит атрибут class.