首页 > 解决方案 > 如何使用 BeautifulSoup 发送密钥

问题描述

我用 selenium 创建了一个脚本来获取给定的GST NUMBER信息。我完成了那个程序,它给了我所需的输出细节,没有任何问题。

现在我不想再与 chrome 浏览器交互了,所以我试图用 BeautilfulSoup 来做这件事。

BeautifulSoup 对我来说是新的,所以我不太想找到元素,我搜索了很多关于如何使用 BeautifulSoup 发送密钥的信息,但我没有得到它。

现在我的脚本被困在这里。

from bs4 import BeautifulSoup
import requests
import urllib.request as urllib2

quote_page = 'https://my.gstzen.in/p/search-taxpayer'
page = urllib2.urlopen(quote_page)
soup = BeautifulSoup(page, 'html.parser')

现在,即使我设法找到了 gst 输入元素,我也想知道如何将密钥发送给它?例如带有发送输入按钮代码或单击“搜索 GST 详细信息”的 15 位 GST 号码。

如果可能,请告诉我解决方案,以便我开始研究它。

实际上,我今晚需要完成这个。

另外,这是我的脚本,它可以轻松地用 selenium 做同样的事情,我想用 BeautilfulSoup 做同样的事情,因为我不希望每次检查 GST 时都运行 chrome,而 BeautilfulSoup 似乎很有趣。

import selenium
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
import csv
import requests
#import pyvirtualdisplay            
#from pyvirtualdisplay import display

#display = Display(visible=0, size=(800, 600))
#display.start()


browser = webdriver.Chrome('E:\\Chrome Driver\\chromedriver_win32\\chromedriver.exe')
browser.set_window_position(-10000,0)
browser.get('https://my.gstzen.in/p/search-taxpayer/')


with open ('product.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    next(csv_reader)
    for row in csv_reader:
        name, phone = row
        time.sleep(1)
        gst = browser.find_element_by_name('gstin')
        gst.click()
        gst.send_keys(name)
        time.sleep(1)
        Details = browser.find_element_by_xpath("//*[contains(text(), '                Search GSTIN Details')]")
        Details.click()
        info = browser.find_element_by_class_name('col-sm-4')
        print(info.text)
        info2 = browser.find_element_by_xpath('/html/body/div[4]/div/div/div[1]/div[2]/div[2]/div[1]/div[2]')
        print(info2.text)
        input('Press Enter to quit')
        browser.quit()

标签: pythonpython-3.xpython-2.7beautifulsoup

解决方案


BeautifulSoup 是一个用于解析和格式化的库,不与网页交互。对于后者,如果该页面需要 JavaScript 才能工作,那么您将无法使用无头浏览器。

如果没有,您至少有两个选择:

  1. 在浏览器的开发人员工具中查看网络选项卡,看看是否可以为要使用的页面重新创建请求,requests或者urllib2
  2. Use mechanize,专为在不依赖 JavaScript 的网站上处理表单而构建

mechanize如果没有 CSRF 令牌或类似机制,工作量会多一点(不过,如果需要 JavaScript,它会再次失败),如果有,工作量会少一点。


推荐阅读