如何使用BeautifulSoup发送密钥

时间:2018-10-01 09:59:35

标签: python python-3.x python-2.7 beautifulsoup

我用硒创建了一个脚本,以获取 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输入元素,我也想知道如何向其发送键?例如15位数的商品及服务税编号,发送发送输入按钮代码或单击“搜索GST详细信息”。

如果可能的话,请告诉我解决方案,以便我可以对此进行研究。

实际上,我今晚需要完成此操作。

此外,这是我的脚本,可以轻松地使用硒进行相同的操作,并且我想使用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()

1 个答案:

答案 0 :(得分:0)

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

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

  1. 在浏览器开发人员工具中查看“网络”标签,看看是否可以使用requestsurllib2重新创建对所需页面的请求
  2. 使用mechanize,它专门用于与不依赖JavaScript的网站上的表单配合使用
如果没有CSRF令牌或类似的机制,

mechanize的工作量会多一些(不过,同样,如果需要JavaScript,它会失败),而如果没有CSRF令牌或类似的机制,则工作量会少一些。