当前位置:   article > 正文

Python网络爬虫,pyperclip与pyautogui模拟用户双击选择复制粘贴微博关键数据_pyauto从粘贴板取数

pyauto从粘贴板取数

以成都地铁官微为例,爬虫爬取成都地铁官微的粉丝数量:

  1. # pyautogui通过模板匹配,找到新浪微博账户显示粉丝数量的位置,
  2. # 然后双击使得数字处于选中状态,再用pyperclip获取粘贴板数字。
  3. import time
  4. import pandas as pd
  5. from tqdm import tqdm
  6. import pyautogui
  7. import webbrowser as wb
  8. from selenium import webdriver
  9. import pyperclip
  10. # 启动程序前先打开浏览器,且使浏览器窗口最大化。
  11. def get_city_data(city):
  12. url = f'https://weibo.com/{city[1]}'
  13. # chromepath = r'D:\program\chromedriver_win32\chromedriver.exe'
  14. # driver = webdriver.Chrome(executable_path=chromepath)
  15. # driver.get(url)
  16. # driver.close()
  17. # driver.quit()
  18. wb.open(url=url)
  19. pyautogui.sleep(10)
  20. # loc.png需要事先打开微博截取,作为目标的模板匹配图片。
  21. # 不同机器不同分辨率loc.png尺寸大小不同
  22. locate = pyautogui.locateOnScreen('loc.png')
  23. center_x, center_y = pyautogui.center(locate)
  24. HIGHT = 38
  25. pyautogui.moveTo(center_x, center_y - HIGHT)
  26. pyautogui.sleep(1)
  27. pyautogui.doubleClick()
  28. pyautogui.sleep(1)
  29. pyautogui.hotkey('ctrl', 'c')
  30. num = pyperclip.paste()
  31. return city[0], int(num), time.strftime('%Y-%m-%d %H:%M', time.localtime())
  32. def main():
  33. city = [
  34. ('成都', '2384889627'),
  35. ]
  36. city_data = []
  37. pbar = tqdm(total=len(city), leave=True)
  38. for c in city:
  39. result = get_city_data(c)
  40. print(result)
  41. city_data.append(list(result))
  42. pbar.update(1)
  43. col = ['城市', '粉丝数量', '统计时间']
  44. df = pd.DataFrame(data=city_data, columns=col)
  45. df = df.sort_values(by=col[1], axis=0, ascending=False) # 降序
  46. # 排序后重置index,
  47. # 否则索引是混乱的
  48. df = df.reset_index(drop=True)
  49. # 因为默认的pandas起始索引从0开始,
  50. # 为了使数据行的初始索引(起始索引index)从1开始
  51. df.index = df.index + 1
  52. print(df.head(10))
  53. df.to_excel('city.xls', encoding='utf-8')
  54. df.to_csv('city.csv', encoding='utf-8')
  55. if __name__ == '__main__':
  56. main()

 

输出:

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号