1 import time 2 import re 3 import requests 4 from selenium.webdriver import Edge 5 from selenium.webdriver.common.by import By 6 from selenium.webdriver.common.keys import Keys 7 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.43', 8 'cookie':'JSESSIONID=831A5ECA7F3AAC9A282AB0E7A9CDB491; uvid=1881565932_1691460962_67; Hm_lvt_a8fda29303267d5a0517d9573ac30d91=1691460963; HWWAFSESID=e6dd4889abfd884dd2; HWWAFSESTIME=1696678400186'} 9 10 # m=input('输入大区') 11 # time.sleep(20) 12 web=Edge() 13 web.get('http://www.xunbao178.com/wmgj/') 14 time.sleep(5) 15 el=web.find_element(by=By.XPATH,value='//*[@id="left_share"]/div[1]/div[2]/div[1]/div[2]/div/span[1]') #找到双线 16 el.click() 17 time.sleep(3) 18 el_1=web.find_element(by=By.XPATH,value='//*[@class="ser_area_list"]//a/span[text()="天光"]') #找到大区 这里可以自己输入大区 19 el_1.click() 20 time.sleep(3) 21 el_2=web.find_element(by=By.XPATH,value='//*[@id="searchBox"]').send_keys('妖精',Keys.ENTER) #找到输入框 输入妖精 22 time.sleep(5) 23 page_num = web.find_element(by=By.XPATH, value='//*[@class="page"]/span[1]').text # 找到页码 24 pattern = re.compile('共(.*?)页', re.S) # 提取页码数字 方便循环 25 n = re.findall(pattern, page_num)[0] #提取页码数字 26 num=int(n) 27 # print(n) 28 29 30 def next_page(): 31 el_4=web.find_element(by=By.XPATH,value='//*[@class="page"]//span/a[text()="下一页"]')# 找到下一页,这里使用是文本查找 32 el_4.click() #点击下一页 33 34 def get_weapon(commid,m): #获取武器的名字 35 url_1='http://www.xunbao178.com/wmgj/buyDetail.gsp?commid='+commid+'&page='+str(m)+'&keyWord=%E5%A6%96%E7%B2%BE&orderBy=default' #拼凑账号详细地址 36 xml=requests.get(url=url_1,headers=headers).text 37 pattern=re.compile('<item id=.*?equipmask="1".*?name=(".*?").*?count="1"',re.S) 38 name=re.findall(pattern,xml)[0] #提取武器的名字 39 # print(name) 40 time.sleep(2) 41 with open('d:/weapon_name.txt','a',encoding='utf-8')as f: #保存武器名字 42 f.write(name+'\n') 43 44 def get_one_page(): #获取一整页的commid 45 # print(page_number) 46 el_3=web.find_elements(by=By.XPATH,value='//*[@id="right_buy"]/div[3]/dl')#获取所有的commid 47 for m in el_3: #循环获取每一个commid 48 commid=m.get_attribute('data-commid') 49 # print(commid) 50 # print(el_4) 51 get_weapon(commid,m) 52 with open('d:/weapon_name.txt','a',encoding='utf-8')as f: #添加空格 53 f.write('\n') 54 55 56 for k in range(1,num+1): #页码之间循环,判断页数 是否需要点击下一页 57 if k <=num-1: 58 get_one_page() 59 print(f'第{k}页下载完成') 60 time.sleep(3) 61 next_page() 62 else: 63 get_one_page() 64 print('全部下载完成了')