python实践3——利用爬虫爬取“广州各大行业微信群...

阅读:
小编:seo


本次以“广州各大行业微信群二维码信息”为例,利用爬虫进行信息“爬取”,并存入数据库,方便后面数据分析处理,以及调用。话不多说,直接上代码:

  1. import pymysql
  2. import requests
  3. import re
  4. def download(urlList):
  5. #连接MySQL
  6. conn = pymysql.connect(
  7. host = '127.0.0.1',
  8. port = 3306,
  9. user = 'root',
  10. password = '******', #根据用户实际密码填写
  11. database = 'pachong',
  12. charset = 'utf8'
  13. )
  14. #获取数据库游标
  15. cursor = conn.cursor()
  16. #创建表格
  17. cursor.execute("create table t_QR(id INT PRIMARY KEY auto_increment NOT NULL,name VARCHAR(50),erweima VARCHAR(230),weixinhao VARCHAR(60),industry VARCHAR(60))")
  18. for urlpath in urlList:
  19. #发起网络请求并下载资源(网页源代码)
  20. res = requests.get(urlpath)
  21. html = res.text
  22. # 筛选数据(正则表达式)[群名,二维码图片地址,微信号,行位分类]
  23. nameGroup = r'alt="(.*?)">'
  24. erweima = r'<img src="(.*?)">'
  25. weixinhao = r'<p class="wxNum c888 ellips">\s*(.*?)\s*</p>'
  26. industry = r'</span>\s*(.*?)\s*</p>'
  27. name_group = re.compile(nameGroup)
  28. erweima_img = re.compile(erweima)
  29. weixin_hao = re.compile(weixinhao)
  30. industry_name = re.compile(industry)
  31. name_list = name_group.findall(html)
  32. erweima_list = erweima_img.findall(html)
  33. weixinhao_list = weixin_hao.findall(html)
  34. industry_list = industry_name.findall(html)
  35. # 数据再处理,获得最终需要数据
  36. name_list1 = name_list[2:-1]
  37. erweima_list1 = []
  38. for i in range(3,len(erweima_list)-1,2):
  39. erweima_list1.append(erweima_list[i])
  40. industry_list1 = []
  41. for j in range(1,len(industry_list),2):
  42. industry_list1.append(industry_list[j])
  43. #将爬取的数据存入数据库MySQL中
  44. for k in range(len(name_list1)):
  45. cursor.execute('insert into t_QR(name,erweima,weixinhao,industry) VALUES("%s","%s","%s","%s")' %(name_list1[k],erweima_list1[k],weixinhao_list[k],industry_list1[k]))
  46. #获取游标中结果数据
  47. cursor.fetchall()
  48. #结果提交
  49. conn.commit()
  50. print("结果已提交")
  51. #断开连接
  52. conn.close()
  53. #生成1-442页网址的列表(字符串的拼接)
  54. def url_list(url):
  55. urlList = []
  56. # 因442页数据太多,先爬取5页看看效果
  57. for i in range(5):
  58. urlPath = url '&p=' str(i)
  59. urlList.append(urlPath)
  60. return urlList
  61. if __name__ == '__main__':
  62. url = r'https://www.weixinqun.com/group?c=440100&m=1'
  63. urlList = url_list(url)
  64. download(urlList)

结果图如下:

其中数据库保存了二维码的地址,只要读取地址,就可以找到相应的二维码。