Chinaunix

标题: 如何用python写个查询下面网站并且得到信息的脚本? [打印本页]

作者: xiaomm250    时间: 2019-04-22 13:48
标题: 如何用python写个查询下面网站并且得到信息的脚本?
网址是
jzsc.mohurd.gov.cn/dataservice/query/staff/list
比如查询“张三”,
然后得到
“B06120001146”,总之是这列的就可以了。
请问用python应该如何写?


如下图所示:


QQ截图20190420113807.png (45.44 KB, 下载次数: 223)

QQ截图20190420113807.png

作者: cfwyy    时间: 2019-04-23 12:52
  1. import sys
  2. import requests
  3. from bs4 import BeautifulSoup

  4. url="http://jzsc.mohurd.gov.cn/dataservice/query/staff/list"
  5. header={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"}

  6. def getRegNum(name="张三"):
  7.     formdata={"ry_type":"",
  8.         "ry_reg_type":"",
  9.         "ry_name":"",
  10.         "reg_seal_code":"",
  11.         "ry_cardno":"",
  12.         "ry_qymc":"",
  13.         "complexname":name
  14.         }
  15.     r = requests.post(url,formdata,headers=header)
  16.     s = BeautifulSoup(r.text,"lxml")
  17.     for td in s.find_all("td",attrs={"data-header":"注册号(执业印章号)"}):
  18.         print(td.get_text().strip())

  19. def main():
  20.     if len(sys.argv)==1:
  21.         getRegNum()
  22.     elif len(sys.argv)==2:
  23.         getRegNum(sys.argv[1])
  24.     else:
  25.         print("useage: {} [name]".format(sys.argv[0]))

  26. if __name__ == '__main__':
  27.     main()
复制代码

  1. python test.py
  2. 津112060903926
  3. B06120001146
复制代码

作者: xiaomm250    时间: 2019-04-23 13:55
回复 2# cfwyy

Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\_123\ddd.py", line 2, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

这个是什么意思?
我没安装这个模块,还是?
是不是这个模块需要单独安装?

作者: xiaomm250    时间: 2019-04-23 14:06
回复 2# cfwyy

我猜你用的是vim编辑器,就像我一样!不然我复制到txt里面,不能自动换行

作者: xiaomm250    时间: 2019-04-23 14:18
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\_123\张三.py", line 31, in <module>
    main()
  File "C:\Users\Administrator\Desktop\_123\张三.py", line 24, in main
    getRegNum()
  File "C:\Users\Administrator\Desktop\_123\张三.py", line 18, in getRegNum
    s = BeautifulSoup(r.text,"lxml")
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\bs4\__init__.py", line 196, in __init__
    % ",".join(features))
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

bug,看来得我自己解决了!
作者: xiaomm250    时间: 2019-04-23 14:23
在cmd窗口下
cd C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts
然后
pip install requests
pip install beautifulsoup4
pip3 install lxml

对了,你的pyhon版本是?

作者: cfwyy    时间: 2019-04-23 16:27
缺库的问题 自己肯定能解决。
我还真不是用的vim,换行符的问题可能是论坛复制出来就这样了。
我python版本是3.6.4
作者: xiaomm250    时间: 2019-04-24 13:54
回复 7# cfwyy

你用啥调试python代码的?要是能像visual studio那样调试代码就好了

作者: cfwyy    时间: 2019-04-24 16:49
回复 8# xiaomm250
不会写啥高级的代码,也不会调试,只会print


作者: xiaomm250    时间: 2019-04-25 11:01
回复 9# cfwyy

def main():
    if len(sys.argv)==1:
        getRegNum()
    elif len(sys.argv)==2:
        getRegNum(sys.argv[1])
    else:
        print("useage: {} [name]".format(sys.argv[0]))
这几句代码是什么意思
程序什么地方用到了sys.argv,我感觉没用到呀
不知道print("useage: {} [name]".format(sys.argv[0]))这句如何解释

作者: cfwyy    时间: 2019-04-25 12:48
回复 10# xiaomm250
sys.argv是命令行运行脚本时的 命令行参数。
不带参数运行,是因为写了默认参数是张三,查的是张三的结果。
也可以带一个名字参数运行,查的就是相应的结果。
如果写再多的参数就没支持了,直接打印一句简单的用法。

其实sys.argv这种是python最基本的,既然要写就应该自己去查python手册。

作者: 萍水e相逢    时间: 2019-04-25 13:03
回复 4# xiaomm250

nano 编辑器很好用的

弃用 vi 了,改 nano


作者: 萍水e相逢    时间: 2019-04-25 13:06
回复 11# cfwyy

按自己的名字查,居然 查到 15行

my god

名字这么好吗?

作者: cfwyy    时间: 2019-04-25 13:23
回复 13# 萍水e相逢

哈哈 全国同名的人太多了,据说全国叫张伟的人有近30万人,我用张伟查了一下也有15条,难道你也叫张伟
作者: xiaomm250    时间: 2019-04-25 13:36
回复 11# cfwyy

这与个人习惯有关,我都不习惯命令行运行脚本,
我用shell,然后点击run,


作者: 萍水e相逢    时间: 2019-04-25 14:52
回复 14# cfwyy

我叫  胡歌








欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2