有時候因為工作、自身的需求,我們都會去瀏覽不同**去獲取我們需要的資料,於是爬蟲應運而生,下面是我在開發乙個簡單爬蟲的經過與遇到的問題。
按照個人習慣,我首先要寫乙個介面,理清下思路。
1、去不同**。那麼我們需要乙個url輸入框。
2、找特定關鍵字的文章。那麼我們需要乙個文章標題輸入框。
文章url抓取
文章標題
**url
抓取文章url
直接上**,然後加上自己的一些樣式調整,介面就完成啦:
那麼接下來就是功能的實現了,我用php來寫,首先第一步就是獲取**的html**,獲取html**的方式也有很多,我就不一一介紹了,這裡用了curl來獲取,傳入**url就能得到html**啦:
private function get_html($url){
$ch = curl_init();
$timeout = 10;
curl_setopt($ch, curlopt_url, $url);
curl_setopt($ch, curlopt_returntransfer, 1);
curl_setopt($ch, curlopt_encoding, 'gzip');
curl_setopt($ch, curlopt_connecttimeout, $timeout);
$html = curl_exec($ch);
return $html;
$coding = mb_detect_encoding($html);
if ($coding != "utf-8" || !mb_check_encoding($html, "utf-8"))
$html = mb_convert_encoding($html, 'utf-8', 'gbk,utf-8,ascii');
得到**的html,要獲取文章的url,那麼下一步就是要匹配該網頁下的所有a標籤,需要用到正規表示式,經過多次測試,最終得到乙個比較靠譜的正規表示式,不管a標籤下結構多複雜,只要是a標籤的都不放過:(最關鍵的一步)
$pattern = '|]*>(.*)|isu';
preg_match_all($pattern, $html, $matches);
匹配的結果在$matches中,它大概是這樣的乙個多維素組:
array(2) {
[0]=>
array(*) {
[0]=>
string(*) "完整的a標籤"
[1]=>
array(*) {
[0]=>
string(*) "與上面下標相對應的a標籤中的內容"
$dom = new domdocument();
@$dom->loadhtml($a);//$a是上面得到的一些a標籤
$url = new domxpath($dom);
$hrefs = $url->evaluate('//a');
for ($i = 0; $i < $hrefs->length; $i++) {
$href = $hrefs->item($i);
$url = $href->getattribute('href'); //這裡獲取a標籤的href屬性
當然,這只是一種方式,你也可以通過正規表示式匹配你想要的資訊,把資料玩出新花樣。
var website_url = '你的介面位址';
$.getjson(website_url,function(data){
if(data){
if(data.text == ''){
$('#article_url').html('
'); return;
var string = '';
var list = data.text;
for (var j in list) {
var content = list[j].url_content;
for (var i in content) {
if (content[i].title != '') {
string += '
' + '[' + list[j].website.web_name + ']' +
'' + content[i].title + '' +';
$('#article_url').html(string);
上最終效果圖:
簡單爬蟲實現 爬取URL
實驗室任務詳細 寫乙個python指令碼,指令碼後面跟上乙個url的 頁面。要求 正則匹配爬蟲的方式,匹配該url網頁中的html的href標籤中的url,顯示這些url,一行乙個。首先明確什麼是 href 定義和用法 標籤的 href 屬性用於指定超連結目標的 url。href 屬性的值可以是任何...
python簡單爬蟲爬取佇列的實現
deque 是雙端佇列。set 中不允許出現重複的內容。import re import urllib import urllib.request from collections import deque queue deque 待抓取的網頁 visited set 已經抓取過的網頁 url nu...
簡單的爬蟲爬取文章
我們會用一些簡單的爬蟲去爬取 等,那麼在別人的 中我們的應選擇對應的標題等資料作為爬取的內容標桿 如以下 模擬瀏覽器發請求 connection connect jsoup.connect document doc connect.get elements select doc.select lis...