黑马程序员技术交流社区
标题:
通过爬虫获取失踪儿童信息
[打印本页]
作者:
yiniuyun77
时间:
2021-7-13 16:33
标题:
通过爬虫获取失踪儿童信息
一个人,一辆摩托车,车后插着一面寻子旗帜,很多人通过电影《失孤》认识了郭刚堂。二十多年来,他一直在锲而不舍地做一件事——寻找被拐走的儿子郭新振。7月13日,公安部在北京召开发布会,介绍电影《失孤》原型拐卖案件侦破情况:电影中的被拐儿童原型郭新振已被公安机关找到,犯罪嫌疑人被警方抓获。看了整个事件的来龙去脉真的很感动,父母的爱真的很伟大。
关于失踪儿童在我们国家依旧是一个很值得关注的群体,那么今天我们就通过爬虫来获取我们国家失踪儿童的数据,希望可以更好的帮助那些失踪的孩子早点回到父母的身边。
首先我们使用的是Selenium
1、获取http://bbs.baobeihuijia.com/forum-191-1.html这个版块上的所有分页页面链接
2、设置代理, 代理我们可以通过www.16yun.cn获取
3代码信息如下:
from selenium import webdriver
import string
import zipfile
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "16OKTFDX"
proxyPass = "940952"
def create_proxy_auth_extension(proxy_host, proxy_port,
proxy_username, proxy_password,
scheme='http', plugin_path=None):
if plugin_path is None:
plugin_path = r'D:/{}_{}@t.16yun.zip'.format(proxy_username, proxy_password)
manifest_json = """
{
"version": "1.0.0",
"manifest_version": 2,
"name": "16YUN Proxy",
"permissions": [
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
},
"minimum_chrome_version":"22.0.0"
}
"""
background_js = string.Template(
"""
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
scheme: "${scheme}",
host: "${host}",
port: parseInt(${port})
},
bypassList: ["foobar.com"]
}
};
chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});
function callbackFn(details) {
return {
authCredentials: {
username: "${username}",
password: "${password}"
}
};
}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: [""]},
['blocking']
);
"""
).substitute(
host=proxy_host,
port=proxy_port,
username=proxy_username,
password=proxy_password,
scheme=scheme,
)
with zipfile.ZipFile(plugin_path, 'w') as zp:
zp.writestr("manifest.json", manifest_json)
zp.writestr("background.js", background_js)
return plugin_path
proxy_auth_plugin_path = create_proxy_auth_extension(
proxy_host=proxyHost,
proxy_port=proxyPort,
proxy_username=proxyUser,
proxy_password=proxyPass)
option = webdriver.ChromeOptions()
option.add_argument("--start-maximized")
# 如报错 chrome-extensions
# option.add_argument("--disable-extensions")
option.add_extension(proxy_auth_plugin_path)
# 关闭webdriver的一些标志
# option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = webdriver.Chrome(chrome_options=option)
# 修改webdriver get属性
# script = '''
# Object.defineProperty(navigator, 'webdriver', {
# get: () => undefined
# })
# '''
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})
driver.get("http://bbs.baobeihuijia.com/forum-191-1.html")
贴出代码的初衷是供大家学习爬虫,大家只是研究下网络框架即可,关于更多的爬虫知识大家可以积极交流学习。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2