简单的正则表达式练习,爬取代理 ip。
仅爬取前三页,用正则匹配过滤出 ip 地址和 端口,分别作为key、value 存入 validip 字典。
如果要确定代理 ip 是否真的可用,还需要再对代理 ip 再进行筛查过滤,最终仅仅保存真实可用代理 ip。
可能需要修改的内容:
xpath 替代正则进行抓取 ip 和端口;
验证代理 ip 是否可用;
再存入mogodb 数据库替代字典。
import re import requests from collections import defaultdict validip = defaultdict() for i in range(1, 3): urls = 'http://www.xicidaili.com/nn/' ua = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36'} r = requests.get(url=urls + str(i), headers=ua).text recontent = re.findall('<img(?:.*)/></td>(?:s+)<td>(.*?)</td>(?:s+)<td>(.*?)</td>', r) for ips in recontent: validip[ips[0]] = ips[1] for ip, port in validip.items(): print(ip, port)
Hello