爬取一 个论坛的QQ号

# 如有错的地址,请大神们指定,谢谢

import random
import re
import urllib.request

listQqAll = []
listNum = []
for i in range(1,50):
    # 循环49次爬取   xx通讯录  共49页
    urlPath = "xx通讯录网址"  # 就不显示了  下面的变量名也改了Xx,我自己是带拼音的,所以改了, -_-
    # 模拟三个浏览器,防止反爬
    agentsList = [
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36",
        "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0"
    ]

    # 随机选择一个浏览器信息
    userAgent = random.choice(agentsList)
    # 创建一个请求体,并将头信息放在请求体中
    resquetXx = urllib.request.Request(urlPath, headers={"User-Agent": userAgent})
    # 请求数据,得到响应
    responseXx = urllib.request.urlopen(urlPath)
    # 读取到内容
    strXx = responseXx.read().decode("utf-8")
    # 查找QQ号数据(正则表达式获取QQ号)
    listXx = re.findall("QQ\D{,3}[1-9]\d{4,10}",strXx,re.I)
    listQqAll.extend(listXx)  # 把查找到的QQ号数据存放在列表中
    listNumber = set(listQqAll)   # 使用set集合排除重复数据
    # 遍历出第一个QQ号的数据
    for qqAndNum in listNumber:
        qqNum = re.findall("\d{5,10}",qqAndNum)  # 获取QQ号的纯数字组合
        listNum.extend(qqNum)  # QQ号数字存放在列表中
setNum = set(listNum)  # 再一次排除重复的数据
# print(setNum)
for num in setNum:  # 遍历出号码出来
    # 打开或创建qq.txt文件,准备把QQ保存到文件中去
    with open(r"qq.txt","a",encoding="utf-8") as af:
        af.write("QQ:" + num + "\n")  # 写入到文件
        af.flush()

你可能感兴趣的:(python基础,python爬虫)