admin管理员组文章数量:1646706
这个爬虫是拿来练手的,可以爬取网络中的QQ号,然后存储到本地。
import urllib.request
import ssl
import re
import os
from collections import deque #导入队列库
def writeFileBytes(htmlBytes,topath):
with open(topath,'wb') as f:
f.write(htmlBytes)
def writeFileStr(htmlBytes,topath):
with open(topath, 'w') as f:
f.write(str(htmlBytes))
def QQCrawler(url, topath):
headers = {
"User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
} #修改一下浏览器表头(User-Agent)
req = urllib.request.Request(url, headers=headers) # 请求体
context = ssl._create_unverified_context() #加上此行可以爬取https格式
response = urllib.request.urlopen(req, context=context)
HTMLStr = response.read()
# writeFileBytes(HTMLStr,r"G:\python代码\爬虫\QQ号.html")
# writeFileStr(HTMLStr,r"G:\python代码\爬虫\QQ号.txt")
htmlStr=str(HTMLStr)
pat=r'\b(([\w-]+://?|www[.])[^\s()<>]+(?:[\w\d]+[\w\d]+|([^[:punct:]\s]|/)))'
#网址的正则表达式
re_url=repile(pat)
urlsList=re_url.findall(htmlStr)
urlsList = list(set(urlsList))
#找到所有的QQ
pat=r"[1-9][\d]{5,9}" #QQ号的正则表达式
re_q=repile(pat) #编译
qqList=re_q.findall(htmlStr)
qqList=list(set(qqList)) #过滤重复QQ号
f=open(topath,'a')
#写入文件
for qq in qqList:
f.write(qq+"\n")
f.close()
return urlsList #返回一个存储这个网页中的超链接
#队列,得到一页中的网址,然后加入队列,爬取每个网页的QQ号
def center(url,topath):
queue=deque()
queue.append(url)
while len(queue)!=0:
targetUrl=queue.popleft()
urlList=QQCrawler(targetUrl, path)
for item in urlList:
tempUrl=item[0]
queue.append(tempUrl)
url = r"https://www.douban/group/topic/17359302/" #爬取链接
path = r"G:\python代码\爬虫\QQ号.txt" #存储路径
# QQCrawler(url,path)
center(url,path)
还存在一些问题:url的正则表达式存在问题,不能匹配所有的链接。运行时也存在问题,爬取到本地的数据只有2M多,程序就停止运行了。
版权声明:本文标题:爬虫爬取QQ号 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729444861a1201328.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论