网站url http://kw.beijing.gov.cn/col/col736/index.html
需求:拿到该网站首页的所有的链接
分析该网站的预览可知该网站用正常方法匹配不到
接着分析该网站的响应数据,发现该文档中有我需要的数据
进入pycharm编辑代码
打印响应数据
# TODO 第一种方法
urls = re.findall(r'/\w+/\d+/\d+/\d+/art_736_\d+.html', str(html_cont), re.S)
# print(urls)
for link in urls:
split_url = link.split('/')
# print(split_url)
if split_url[2] == "2020" and split_url[3] == "10":
new_links.append("http://kw.beijing.gov.cn" + link)
print(new_links)
打印输出结果
第二种方法:
# TODO 第二种方法
urls = re.findall('urls\[i\]=([\\s\\S]*?);headers\[i\]=', str(html_cont))
# print(urls)
for link in urls:
new_link = link.replace(r'\'', '').replace(r'\'', '')
split_url = new_link.split('/')
# print(split_url)
if split_url[2] == "2020" and split_url[3] == "10":
new_links.append("http://kw.beijing.gov.cn" + new_link)
print(len(new_links))
print(new_links)
输出同样的结果。
两种方法对比而言,我更喜欢第一种方法,比较好理解
第二种方法中
[\\s\\S]* 表示匹配换行和空格
([\\s\\S]*?)表示最短匹配