我用硒创建了一个脚本,以获取 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()
答案 0 :(得分:0)
BeautifulSoup是一个用于解析和格式化而不与网页进行交互的库。对于后者,如果该页面需要JavaScript才能工作,则您将无法使用无头浏览器。
如果没有,您至少有两个选择:
requests
或urllib2
重新创建对所需页面的请求mechanize
,它专门用于与不依赖JavaScript的网站上的表单配合使用 mechanize
的工作量会多一些(不过,同样,如果需要JavaScript,它会失败),而如果没有CSRF令牌或类似的机制,则工作量会少一些。