爬虫测试

#使用tree控件将爬取数据进行显示,单击打开链接
#找到总页面数据,爬取所有页在数据 2020.4.28

from tkinter import *                                  #导入窗口控件
import requests
from lxml import etree
import tkinter
from tkinter import ttk
from PyQt5 import QtCore, QtGui, QtWidgets
from bs4 import BeautifulSoup
from urllib.request import urlretrieve
import os
import webbrowser #调用浏览器打开网页
def download_song(content):
  urlpage=content
  datas = {"page.pageNo": urlpage,
           "page.orderBy": "",
           "page.order": "",
           "province": "210000000000",
           "city": "211300000000",
           "registerentername": "",
           "xkznum": "",
           "treadname": "",
           "treadcode": "",
           "publishtime": ""}
  url="http://permit.mee.gov.cn/permitExt/syssb/xkgg/xkgg!licenseInformation.action"
  r = requests.post("http://permit.mee.gov.cn/permitExt/syssb/xkgg/xkgg!licenseInformation.action", data=datas)
  r = requests.post(url,data=datas)
  html = etree.HTML(r.text)
  href_url = html.xpath('//table[@class="tabtd"]/tr/td/a/@href')
  href_name = html.xpath('//table[@class="tabtd"]/tr')[1:]
  urlpage = html.xpath('//div[@class="fr margin-t-33 margin-b-20"]/a/@onclick')[5] #找到HTML中总页数
  urlpageidstr = urlpage[21:23]#截取字符串,得到总页数
  print(urlpageidstr)
  i=0
  for href_url,roos in zip(href_url,href_name):
      addurl = href_url
      name = roos.xpath('./td[4]/text()')[0]
      i=i+1
     #添加数据
      tree.insert("",i,text="",values=(i,name,addurl))

pass


root=Tk () #创建窗口
root.title("label-test")
root.geometry("800x900+300+100") #小写x代表乘号500x400为窗口大小,+500+300窗口显示位置
l = Label(root, text="请输入要下载的歌单URL",  font=("Arial",12), width=20, height=5)#创建标签控件
l.grid() #标签控件以表格形式显示在窗口左上角
enter1=Entry(root)#创建输入框控件
enter1.grid(row=0,column=1) #位置显示在0行,1列。
tree = ttk.Treeview(root, show="headings") #表格第一列不显示
  # tree.pack()
tree.grid(row=1, columnspan=2)
tree["columns"] = ("序号", "企业名称", "详细信息")
# 设置列,不显示
tree.column("序号", width=100)
tree.column("企业名称", width=100)
tree.column("详细信息", width=600)
# 显示表头
tree.heading("序号", text="序号")
tree.heading("企业名称", text="企业名称")
tree.heading("详细信息", text="详细信息")

def tree_click(event):
  item_text = tree.item(tree.selection(), 'values')[2]
  print(item_text)
  tree.update()
  v = int(soup.body.find_all(name='em', attrs={'class': 'num'})[0].string.split('/')[1]) + 1  # 漫画搜索关键字的总页数放到变量v里


  #item_text = tree.item(tree.selection(),'values')
  #curItem = tree.item(tree.focus())
  #col = tree.identify_column(event.x)
  #print (item_text)
  #print('curItem = ', curItem)
  #print('col = ', col)
  #webbrowser.open_new_tab('http://permit.mee.gov.cn' + text.get(ACTIVE))
# 列表框绑定鼠标事件函数
tree.bind('<ButtonRelease>', tree_click)
button=Button(root,text="开始下载",font=('华文行楷',10),command=download_song)#创建按钮控件
button.grid(row=5,column=0,sticky=W)#位置显示在2行,0列,对齐方式 W  ,N,S,E
button1=Button(root,text="退出",font=('华文行楷',10),command=root.quit)#创建按钮控件
button1.grid(row=5,column=1,sticky=W)#位置显示在2行,0列,对齐方式 W  ,N,S,E
#打开查询页面,得到页面总数
datas = {"page.pageNo": "1",
             "page.orderBy": "",
             "page.order": "",
             "province": "210000000000",
             "city": "211300000000",
             "registerentername": "",
             "xkznum": "",
             "treadname": "",
             "treadcode": "",
             "publishtime": ""}
url = "http://permit.mee.gov.cn/permitExt/syssb/xkgg/xkgg!licenseInformation.action"
r = requests.post("http://permit.mee.gov.cn/permitExt/syssb/xkgg/xkgg!licenseInformation.action", data=datas)
r = requests.post(url, data=datas)
html = etree.HTML(r.text)
urlpage = html.xpath('//div[@class="fr margin-t-33 margin-b-20"]/a/@onclick')[5]  # 找到HTML中总页数
urlpageidstr = urlpage[21:23]  # 截取字符串,得到总页数
#开始爬取所有页面数据
start_page=1
urlpageidstr=(int(urlpageidstr))
for page in range(start_page,urlpageidstr):
      content=page
      download_song(content)  #调取download_song过程进行查询操作
      #print(content)

root.mainloop() #显示窗口  mainloop 消息循环


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值