关键词:
我构建了这个网络爬虫。
https://github.com/shoutweb/WebsiteCrawlerEmailExtractor
//Regular expression function that scans individual pages for emails
function get_emails_from_webpage($url)
$text=file_get_contents($url);
$res = preg_match_all("/[a-z0-9]+[_a-z0-9\.-]*[a-z0-9]+@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]2,4)/i",$text,$matches);
if ($res)
return array_unique($matches[0]);
else
return null;
//URL Array
$URLArray = array();
//Inputted URL right now it just pulls it from a GET variable but you can do alter this any way you want
$inputtedURL = $_GET['url'];
//Crawling the inputted domain to get the URLS
$urlContent = file_get_contents("http://".urldecode($inputtedURL));
$dom = new DOMDocument();
@$dom->loadHTML($urlContent);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
$scrapedEmails = array();
for($i = 0; $i < $hrefs->length; $i++)
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
$url = filter_var($url, FILTER_SANITIZE_URL);
//array_push($scrapedEmails, $hrefs->length);
// validate url
if(!filter_var($url, FILTER_VALIDATE_URL) === false)
if (strpos($url, $inputtedURL) !== false)
array_push($URLArray, $url);
//Extracting the emails from URLS that were crawled
foreach ($URLArray as $key => $url)
$emails = get_emails_from_webpage($url);
if($emails != null)
foreach($emails as $email)
if(!in_array($email, $scrapedEmails))
array_push($scrapedEmails,$email);
//Ouputting the scraped emails in addition to the the number of URLS crawled
foreach($scrapedEmails as $value)
echo $value . " " . count($URLArray);
它基本上会进入您输入的域,获取所有页面,然后检查是否有电子邮件。
每个域最多可能需要30秒才能抓取。我想看看是否有办法加速这个webcrawler。我想的一种方法是将其限制为仅联系页面,但我无法找到一种聪明的方法。
如果你的意图不是邪恶的 -
正如评论中所提到的,实现此目的的一种方法是并行执行爬虫(多线程)---而不是一次执行一个域。
就像是:
exec('php crawler.php > /dev/null 2>&1 &');
exec('php crawler.php > /dev/null 2>&1 &');
exec('php crawler.php > /dev/null 2>&1 &');
exec('php crawler.php > /dev/null 2>&1 &');
exec('php crawler.php > /dev/null 2>&1 &');
在服务器上,您可以设置自动执行此操作的CRON
作业,以便您不会手动运行它。
如何使这个联合查询更有效率?
】如何使这个联合查询更有效率?【英文标题】:howtomakethisunionquerymoreeffecient?【发布时间】:2021-02-2515:27:45【问题描述】:我使用UNION连接创建了下面的SQL查询。如您所见,我查询同一张表2次,条件略有不同。如果TYP是A,那么... 查看详情
我怎样才能使这个二进制搜索代码更有效?
】我怎样才能使这个二进制搜索代码更有效?【英文标题】:HowcanImakethisbinarysearchcodemoreefficient?【发布时间】:2022-01-1107:00:40【问题描述】:publicclassMySearchpublicstaticintsearch(MyArrayarray,intvalue)intindex=-1;intstart=0,end=array.length-1;while(sta... 查看详情
java示例代码_奇怪的错误+如何使代码更有效
java示例代码_奇怪的错误+如何使代码更有效 查看详情
如何使这段代码更短[关闭]
】如何使这段代码更短[关闭]【英文标题】:HowdoImakethiscodeshorter[closed]【发布时间】:2017-08-0422:52:20【问题描述】:如何使这段代码更短我已经尝试了所有方法!if(((condition.toString()).length())==("false".length())-1&&((condition.toString... 查看详情
python——网络爬虫,一个简单的通用代码框架(代码片段)
一、代码"""通用代码框架:可使网页爬取变得更稳定更有效下面是一个爬取百度网页的例子,正常情况下是返回"""importrequestsdefget_HTML_Text():try:r=requests.get(url,timeout=30)r.raise_for_status()#若状态不是200,引发HTTPError异常r.encoding=r.apparen... 查看详情
有没有办法让这个代码更有效,更小?(代码片段)
我刚刚编写了这个代码,用于将十进制转换为二进制,使用除以2的方法。它工作得很好,但我只是想知道是否有办法让它更有效,更容易阅读。defbinary(d):stop=Falsec=[]whilestop==False:b=d%2ifb==0:d=d/2else:d=d/2b=1c.append(b)ifd==1:c.append(1)stop=Tr... 查看详情
如何使这个 python 代码成为一个衬里? [关闭]
】如何使这个python代码成为一个衬里?[关闭]【英文标题】:HowdoImakethispythoncodeaoneliner?[closed]【发布时间】:2021-11-1403:16:39【问题描述】:for_inline:ifline=="t":t+=1else:s+=1如何使这个python代码成为一个单行代码?【问题讨论】:t和s... 查看详情
雄联盟工程师独家分享:如何使开发更有效率
Hey,大家好!我是Bill“LtRandolph”Clark,一名英雄联盟的游戏工程师。许多Rioter工程师关注大量的内容需要直接发送给玩家问题——这是两个我最近最喜欢的例子之一,包括最新的冠军Jhin及项目重构的支持。而我的团... 查看详情
如何使这个 R data.table 代码更节省内存?
】如何使这个Rdata.table代码更节省内存?【英文标题】:HowtomakethisRdata.tablecodemorememory-efficient?【发布时间】:2015-03-1223:21:37【问题描述】:我有两个真实的data.table代码示例,它们可以正常工作,但似乎消耗的内存比我预期的要... 查看详情
我怎样才能使这个 WHERE NOT EXISTS 查询更有效
】我怎样才能使这个WHERENOTEXISTS查询更有效【英文标题】:HowcanImakethisWHERENOTEXISTSquerymoreefficient【发布时间】:2021-05-2618:27:29【问题描述】:首先是表格调查CREATETABLE`surveys`(`survey_id`int(11)NOTNULLAUTO_INCREMENT,`survey_name`varchar(100)COLLATEut... 查看详情
如何使批处理文件仅在应用程序关闭后运行
】如何使批处理文件仅在应用程序关闭后运行【英文标题】:Howtomakebatchfilerunonlyafterapplicationhasclosed【发布时间】:2021-08-1608:43:11【问题描述】:这个用例是不必要的定义,但我对脚本产生了兴趣,我正在努力学习。我发现当尝... 查看详情
python(如何使文本在pythonshell中显得更慢)(代码片段)
我正在尝试编写游戏代码,但我仍然坚持尝试在pythonshell中使打印速度变得更慢我感谢所有帮助这里是目前为止的代码print("welcometothemusicguessinggame")print("begin?")print("firstofallletsgothroughtherules")print("Youhavethree3livestoanswereachsonginthisg 查看详情
如何使这个 jquery 函数更简洁?
】如何使这个jquery函数更简洁?【英文标题】:HowcanImakethisjqueryfunctionmoreterse?【发布时间】:2011-06-2116:46:17【问题描述】:我在我的asp.net项目中的一个通用javascript文件中有此代码。每当我将鼠标悬停在受此函数影响的按钮之一... 查看详情
如何使 Tomcat 8 websocket 示例有效? [关闭]
】如何使Tomcat8websocket示例有效?[关闭]【英文标题】:HowtomakeTomcat8websocketexampleworks?[closed]【发布时间】:2014-03-1908:43:58【问题描述】:我刚刚下载了Tomcat8,我想通过在ECHO示例应用程序上进行测试来测试WebSocket功能(位于../webapp... 查看详情
如何编写更好,更清晰的银行帐户代码版本?[关闭](代码片段)
...已经创建的帐户。这是非常程序化的,但我需要帮助知道如何做才能让它变得更好。就像我想要一个选项,在存款完成后退回并退出,并使用单独的键退出控制台应用程序。intmain()//MIKEBANKLTDstringname;stringdefacctNum="123456";stringacctNum... 查看详情
我可以使这个phonevalidatorregex更有效吗?(代码片段)
...创建高效的正则表达式真的是一种艺术吗?)所以我写了这个简单的正则表达式以匹配以色列电话号码:^05[23489]-?[d]3-?[d]4$但是它能完成在1或2秒内完成大约10,000个电话号码验证的工作吗?我这里没有电脑所以我无法查看。谢谢... 查看详情
如何使页面交互更流畅(代码片段)
流畅性本篇是基于FDCon2019上《让你的网页更丝滑by刘博文》的复盘文。该课题也是博主感兴趣的领域,后续会结合React的Schedule与该文进行进一步整合,个人博客被动交互:animation主动交互:鼠标、键盘被动交互当前市面上的设备频率... 查看详情
爬虫日记(98):twisted的使用回调更简单(代码片段)
在前面已经学习了使用一个下载诗歌的客户端,而这个客户端使用了传送层、协议、协议工厂类的抽象,这样更加方便框架的抽象能力,适用更多类型的应用。由于前面的例子实现还是有点复杂,可以对它进一步修改,可以改为... 查看详情