我想在社交网络上获取注册用户的所有用户名/用户ID,但不知道如何开始......
我注意到所有个人网页都遵循相同的格式: http://www.examplewebsite/user/ ***
examplewebsite:我做了,它可能是facebook或twitter
***:是该用户的用户名
所以,我想知道我是否可以让python代码自动搜索并返回满足格式的所有网址(只是地址,不需要网页内容)。我应该使用什么python func / library?
谢谢大家!!!
答案 0 :(得分:0)
假设您正在处理在提供无效用户名时使用http.client(python 2.x中的httplib)库返回404的网站:
try:
connection = http.client.HTTPConnection("www.examplewebsite.nnn")
connection.request("HEAD", "user/" + user_id)
print(connection.getresponse().status)
except Exception as ex:
print("oops! " + str(ex))
如果您获得404或其他错误代码,则不是真实页面。但是,假设他们没有重定向页面来处理404,或者某种默认的重新路由。
我假设你正在谈论某种字母数字模式,所以如果你只是寻找数字,你可以只为范围内的user_id(10000,100000)做。
请注意,任何设计合理的网站都可能会抓住您正在做的事情(基本上抓取他们的网站)并以某种方式锁定您。
如果你想尝试所有的字母数字排列,你可以使用itertools.permutations,其中perm_len是返回的字符串的长度:
for perm_len in range(min_username_len, exclusive_max_username_length):
perms = itertools.permutations('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', perm_len)
请注意,此时您正在做的事情基本上是在试图强行执行您所追求的任何社交网络,这将是令人难以置信的,效率极低的。再一次,你可能很容易被锁定。
您遇到的问题是次要的,响应代码不一定会告诉您任何事情。例如,Facebook为所有用户名返回302,而不仅仅是有效用户名。我认为你太过分了,无法看到网站的基本网址结构。
最后,您所做的事情在您所在的司法管辖区甚至可能不合法。轻轻一点。