Mathematica字符串处理之-mywife.cc

Mathematica字符串处理之-mywife.cc

  • MD DocUmEnt:3/6/2016 3:51:12 PM by Jimbowhy
  • CSDN PuBlISheD: http://blog.csdn.net/WinsenJiansbomber/article/details/50814225
  • mathematica_mywife.cc.zip http://download.csdn.net/detail/winsenjiansbomber/9453956

自上一篇和mywife.cc有关的文章《mywife.cc 神一样的存在!》后,mywife.cc 就好像访问不了,这今天又打开来看了一下,发现改版好像。

对于mywife.cc这样的神奇网站,我感兴趣的不仅有那点图片和视频,更感兴趣的还的背后的数据处理。字符串处理就是一个方面。

最近在用Mathematica做图像处理,刚好字符串处理也一并过了一遍。这家伙虽然运行速度慢了点,但是功能却算是强大的。就当前来讲,需要将 mywife.cc 网站上的图片和视频链接地址收集整理。来看看网页上的代码内容 (view-source:http://mywife.cc/index?p=1),我感觉兴趣的有舞ワイフ セレブクラブ,和内容列表:


中山 成美

「専業主婦として平凡な毎日を過ごし、オバサンになっていくのかと思うとじっと…

続きを読む »

...


西田 春菜

ご主人の浮気がキッカケで不倫サイトにアクセスした西田さん。「一ヶ月前に主人に…

続きを読む »

每个列表包含指向某个视频的页面地址,还有预览图片、角色信息等等。进入视频链接页面后,主要的数据有视频地址和预览图片,当然还有标题,它含有视频编号信息,这个编号和视频的文件名相关:

No.603 西田 春菜|セレブクラブ舞ワイフ

为了抓取到这些数据,需要用到 Mathematica 的一个方法 URLFetch,它可以用来在页面间传送数据,当然也可以提交页面表单。先来小试牛刀吧,写一个函数来读取页面标题:

GapGet[url_String] := Module[{}, {
    hml = StringTake[URLFetch[url], {1, 1024}],
    pos = StringPosition[hml, #] & /@ {"", ""},
    range = Pick[Flatten[pos], {1, 0, 0, 1}, 0] + {1, -1},
    StringTake[hml, range]
    }[[-1]]]

title = GapGet["http://mywife.cc/index?p=2"]
GapGet["http://mywife.cc/teigaku/model/no/1000"]

舞ワイフ セレブクラブ
No.595 沢村 歩|セレブクラブ舞ワイフ

只需要 URL,通过上面的 GapGet 函数就就可以返回页面的标题“舞ワイフ セレブクラブ”,“舞”字日文的假名写作“まい”,即英文 my 的读音。セレブ (せれぶ selebu)则是日本俚语,有上流、优雅的含义。而 クラブ (kuubu) 即是英英单词 Club 的音译。整个中文的译法应该就是“人妻名人堂”。

好吧,是时候把名人堂搬到你家仓库了。首先,需要将主页的目录列表取下来处理,先通过 SetDirectory 设置工作目录,一会导出数据时较方便。榨取列表时,使用关键字符 wifecon 等等来进行分割:

SetDirectory["C:\\mywife.cc"];
url = "http://mywife.cc/index?p=1";
hml = URLFetch[url];
pos = StringPosition[hml, {"
"}]; pos = Flatten[Transpose[pos][[1]]] - 1; pos = Join[pos, {pos[[-1]] + 2 256}]; pos = Partition[pos, 2, 1]; list = StringTake[hml, pos];(* clip item *)

分割时使用 StringPosition,它会返回分割标记的两端的位置,通过 StringTake 提取列表时,只需要使用想邻两个分割点的内侧两个位置就可以了,提取得到的数据就会类似这样:


小野 杏奈

まるでアニメのキャラクターのような素晴らしい神がかったスタイルを持つ人妻がやって来ました\[Ellipsis]

続きを読む »

得到这个列表项后,还不能直接使用,需要再进一步的分解,比如说需要 thumb.jpg 和 teigaku 链接信息,取得链接后,还要需要第二层的页面数据。进行下一步的数据分解,这时可以使用换行符作为分割关键字。

pos = StringPosition[#, "\n"][[2 ;; 3]] & /@ list;
pos = Partition[Flatten[pos], 4];
pos = Transpose[{pos[[ ;; , 1]] + 1, pos[[ ;; , 3]] - 1}];
len = Length[list];
For[{i = 1, li = {}}, i < len, i++,li = Join[li, {StringTake[ list[[i]], pos[[i]] ]} ]];
imglist = StringReplace[#, "thumb" -> "topview"] & /@ li;(* retrive topview  *)
pos = StringPosition[#, {"

由于视频预览图片 topview 和列表预览图片 thumb 存在同一个目录的,所以直接替换就可以了。这里使用到集合部分重组的功能 Part,即[[x]]这样的表达式,它可以有以下这几种功能,规则比较复杂,如下表达,Rc、Hc 表示选择行数、列数,Rn、Cn 表示从第几行、列开始选择:

[[Rh,Ch]]           表示选择 Rh 行的 第 Ch 列
[[Rh;; ]]           表示选择 Rh 行之后的所有行
[[  ;;Rh]]          表示选择从开始行到 Rh 为止的行
[[  ;;,j]]          表示选择所有行的第 j 列
[[Rh,Ch ;;]]        表示从第 Rh 行的 第 Ch 列开始选择,本行内选择
[[ ;; Rc,Ch ]]      表示选择 Rc 行的 第 Ch 列,本行内选择
[[m1;;n1, m2;;n2]]  子矩阵

接下来再取视频链接,并生成生成页面ID和视频编号关系的数据集合:

pos = StringPosition[#, "\n"][[1 ;; 2]] & /@ list;
pos = Partition[Flatten[pos], 4];
pos = Transpose[{pos[[ ;; , 1]] + 1, pos[[ ;; , 3]] - 1}];
len = Length[list];
For[{i = 1, pgs = {}}, i < len, i++,pgs = Join[pgs, {StringTake[ list[[i]], pos[[i]] ]} ]];
(*Import["links.txt","Lines"];*)
pos = StringPosition[#, {"href=\"", "\" rel"}] & /@ pgs;
pos = Partition[Flatten[pos], 4];
pos = Transpose[{pos[[ ;; , 2]] + 1, pos[[ ;; , 3]] - 1}];
For[{i = 1, links={}}, i #) & /@ links;
ts = GapGet[ # ] & /@ links;
MatrixForm[ts = Transpose[{links, ts}]]
Export["titles.txt", ts]

上面使用 MatrixForm 来将数据以矩阵的方式陈列来出:

("http://mywife.cc/teigaku/model/no/1029"   "No.618 矢吹 千尋|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1028"    "No.617 上重 友里|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1027"    "No.616 福山 涼子|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1026"    "No.615 南 麻央|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1025"    "No.614 今井 沙月|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1024"    "No.613 前田 里奈|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1023"    "No.612 佐々木 貴子|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1022"    "No.611 桜井 菜々美|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1021"    "No.610 斉藤 美鈴|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1020"    "No.609 竹内 美羽|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1019"    "No.608 中山 成美|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1018"    "No.607 堀 美幸|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1017"    "No.606 杉本 綾香|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1016"    "No.605 三上 千里|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1015"    "No.604 中沢 蘭|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1014"    "No.603 西田 春菜|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1013"    "No.602 千葉 美月|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1012"    "No.601 藤原 梨紗|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1011"    "No.600 遠藤 佳恵|セレブクラブ舞ワイフ"
"http://mywife.cc/teigaku/model/no/1009"    "No.599 白石 茜|セレブクラブ舞ワイフ")

有了这些数据后,就可以按排下载器般文件数据了,我试着用之前开发的 DDA(DOC88_Cracker_Jimbowhy) 下载了 topview 预览图,并在本地生成了页面来关联所有这些数据,看起来是这样的,gif文件由 Mathematica 导出,使用了选项 “DisplayDurations” -> 0.6 来设置延时。文件打包上传可以下载查看 mathematica_mywife.cc.zip:

Mathematica字符串处理之-mywife.cc_第1张图片

导出的 views.txt、titles.txt 数据格式文件如下:






















{"http://mywife.cc/teigaku/model/no/1029", "No.618 矢吹 千尋|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1028", "No.617 上重 友里|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1027", "No.616 福山 涼子|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1026", "No.615 南 麻央|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1025", "No.614 今井 沙月|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1024", "No.613 前田 里奈|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1023", "No.612 佐々木 貴子|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1022", "No.611 桜井 菜々美|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1021", "No.610 斉藤 美鈴|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1020", "No.609 竹内 美羽|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1019", "No.608 中山 成美|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1018", "No.607 堀 美幸|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1017", "No.606 杉本 綾香|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1016", "No.605 三上 千里|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1015", "No.604 中沢 蘭|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1014", "No.603 西田 春菜|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1013", "No.602 千葉 美月|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1012", "No.601 藤原 梨紗|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1011", "No.600 遠藤 佳恵|セレブクラブ舞ワイフ"}
{"http://mywife.cc/teigaku/model/no/1009", "No.599 白石 茜|セレブクラブ舞ワイフ"}

你可能感兴趣的:(Mathematic,mywife-cc)