分享一个用了多年自动下载百度贴吧图片的PHP脚本
分享一个我经常用的下载百度贴吧的PHP脚本,贴吧有防爬机制,目前的做法是下载前设置cookie,然后下载完一张图片后停1-3秒,脚本基于phpspider,把脚本放到官方的demo目录,然后通过PHP命令行执行即可,代码如下:ini_set("memory_limit", "10240M");
require_once __DIR__ . '/../autoloader.php';
use phpspider\core\phpspider;
use phpspider\core\requests;
use phpspider\core\selector;
shezhenba();
function shezhenba(){
$pn = 0;
$base_url = "https://tieba.baidu.com";
do{
$page = 'https://tieba.baidu.com/f?kw=%E8%88%8C%E8%AF%8A&ie=utf-8&pn='.$pn;
print_r($page);
echo "\n";
$cookies = 'BIDUPSID=6CE1EC442CE375FA4F1E75D997B5ADE8; PSTM=1632754665; __yjs_duid=1_af1282fe895844b6fb1b5aa89c54bb0e1633790836871; BDUSS=diZzNnRlpLbEdQUGtsLWFQMW1YVlZtOEQyY05BeFN1ZkRPd2E2cE90Zk5WUXBpSVFBQUFBJCQAAAAAAAAAAAEAAABx2j4UYTg3MDA4OTQwMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM3I4mHNyOJhS1; BDUSS_BFESS=diZzNnRlpLbEdQUGtsLWFQMW1YVlZtOEQyY05BeFN1ZkRPd2E2cE90Zk5WUXBpSVFBQUFBJCQAAAAAAAAAAAEAAABx2j4UYTg3MDA4OTQwMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM3I4mHNyOJhS1; BAIDUID=5456774366A8C00FF86876486F0DB581:FG=1; BAIDUID_BFESS=5456774366A8C00FF86876486F0DB581:FG=1; ZFY=5eOz6iTAoRSXOQIWQeJoaZPN21JdsF2CCt9BuAy2iCg:C; FEID=v10-b28aceca5f39f5eed5e238c6d308f8895cd85927; __xaf_fpstarttimer__=1672475658503; __xaf_thstime__=1672475658530; __xaf_fptokentimer__=1672475658654; __bid_n=186203427bcc9936ac4207; STOKEN=7facc69ba79da44fc22e5eb5e5a7d07ccc9bae352015d2295cc8f59fa333124f; BAIDU_WISE_UID=wapp_1678945027782_802; arialoadData=false; USER_JUMP=-1; Hm_lvt_98b9d8c2fd6608d564bf2ac2ae642948=1678945026,1679021240; 339663473_FRSVideoUploadTip=1; video_bubble339663473=1; st_key_id=17; FPTOKEN=0WUptM9aTVWCpeGQDJAxkbvuBnYJEvx+UHMK/kHwRiS2ftyac7+BQU5NtXrjEWEwaidVOIKllHETC0hWzCLmjsst7cTDJD05zlR2JsF6QXrlKLmSUexFmPjZx9flG1VFBzc+rWOKKDRQmR+1WCOwPNwmJcZTztaw7/VhluW5e5WsU0al2cQ9ht543kQW3DpcP0nvvkqZTS476NgV/jVCQm/Rw2thUvk+bv07WS8AlhQcikrPkib9kttVCgvqVATfOVqg0cp2JQh2FW+R55z8AZLkjtvoz+qDEmONzN/8ln5LvrPZ64y31/UVZvSPgMygWx109gI8g8eq1y2godJfAlRmyBKnfo0zfWz7fMuCb2ErGg3elsS2BJXtjZQU526tmXdipVtK1o52bp5/XvAHlg==|aYVMzCSV3lKqH2S1CjYxc3CNBWz6g/IOlpi0b2YTnVw=|10|52cebbac2c97988cd9917e0963646e2c; wise_device=0; tb_as_data=4d723ef8e237b364f0ce33fd6b857e94fad1e624a2f04a3d47c1fb5a78d1708f77cba9a498e81b483fe7d2e9c821cbeba9735978f7673b06e8b35220fd8acdd211b9ab9f799c8b8e4c9959c575f82e5c9d6f488807979aa0dca83e1f949a9343; Hm_lpvt_98b9d8c2fd6608d564bf2ac2ae642948=1679021611; XFI=e7572c90-c46e-11ed-a256-dbfb24d09753; ab_sr=1.0.1_ZDYzM2JjYWY4ZjNmNGE3YzdjYzEzNjY3NjliNzhmNTY4ZGZjM2VhYWFkY2Q2ZDI0YzQwMGRhYjlmYmU2MTBlYjIyNTY5NTlhZjkwNTlhYWJjNzcxM2FjMWNjNmVhNmRhNzQ1ZjNiOGE1ZDY4ZDQ0NDY4OGMxZDFlZTA3YmNiMmY2Mzc2Mjc5NmZkMjFiMmM2ZGZkNDc5YjEzNzY1N2U0OTVjNGQyMmZjNGE0N2Q4MDRlMTAxYjIxZWI1ODFmNDQx; st_data=a0de6beb1908da41c2b9442b142823cf0d686519129581863ab7b383dfa3ec057af452673680dbe10f706d9126d8cbccd63ee984d9b58498e045c578ddd2a2677a09ec412fb57188ef388884c070689034bc9d3dedfb1693f057409b498941de; st_sign=d29e0556; BCLID=9729821696371937476; BCLID_BFESS=9729821696371937476; BDSFRCVID=HS8OJeCT5G09-d6fLcPAMeLbZdxIU97TTPjcTR5qJ04BtyCVcmiREG0Ptsp1nZLM_EGSogKK3gOTH4DF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; BDSFRCVID_BFESS=HS8OJeCT5G09-d6fLcPAMeLbZdxIU97TTPjcTR5qJ04BtyCVcmiREG0Ptsp1nZLM_EGSogKK3gOTH4DF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=tbIJoDK5JDD3fP36q45HMt00qxby26n7Lbb9aJ5nQI5nhKIzb5jtX-trLtc-WPjz5TbA-CI5QUbmjRO206oay6O3LlO83h52aC5NKl0MLPb5qKjkWxvYBUL10UnMBMPe52OnaIbg3fAKftnOM46JehL3346-35543bRTLnLy5KJYMDcnK4-XDTcBDNQP; H_BDCLCKID_SF_BFESS=tbIJoDK5JDD3fP36q45HMt00qxby26n7Lbb9aJ5nQI5nhKIzb5jtX-trLtc-WPjz5TbA-CI5QUbmjRO206oay6O3LlO83h52aC5NKl0MLPb5qKjkWxvYBUL10UnMBMPe52OnaIbg3fAKftnOM46JehL3346-35543bRTLnLy5KJYMDcnK4-XDTcBDNQP; H_PS_PSSID=38185_36561_38410_38113_38127_38398_38170_38290_38235_37937_38314_38382_38285_38041_26350_38281_37881; XFCS=B220D1E2279D5EF5A7FDFBC9FF026AB479D506E9C98AADFC2AFAD41D119C37B8; XFT=9AaMbOWwNuyEUeuVBScwdldPcP4Ya/XM8TSwhDHC1dA=; RT="z=1&dm=baidu.com&si=d0fec9c8-7f18-45e5-b71b-6535e933dede&ss=lfbxw7hz&sl=i&tt=fpc&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=835e&ul=8dka';
requests::set_cookies($cookies, 'tieba.baidu.com');
$html = requests::get($page);
$url = selector::select($html, "//div[@class='threadlist_lz clearfix']");
foreach ($url as $key => $value) {
preg_match('/href="(.*?)"/', $value,$matches);
if ($matches && "/p/5908153839" != $matches) {
$chtml = requests::get($base_url.$matches);
$data = selector::select($chtml, "//div");
if(empty($data)) {
continue;
}
foreach ($data as $key => $content) {
preg_match_all('/src="(.*?)"/', $content,$matches);
if ($matches) {
foreach ($matches as $key => $img_url) {
if(strpos($img_url,'image_') !== false || strpos($img_url,'i_') !== false || strpos($img_url,'gif') !== false || strpos($img_url,'mp4') !== false){
continue;
}
$arr = parse_url($img_url);
$arr2 = pathinfo($arr['path']);
print_r($img_url);echo "\n";
$file = "E:/zhongyiba2/" . $arr2["basename"];
if(!file_exists($file)){
file_put_contents($file,file_get_contents($img_url) );
}
// 停几秒,防止触发百度防爬算法
sleep(1);
}
}
}
}
}
$pn += 50;
// 停几秒,防止触发百度防爬算法
sleep(rand(1,5));
}while($pn < 501) ;
}
如果有大佬知道更好的防爬机制,请赐教。{:1_893:}
可以啊,感谢感谢 谢谢,感谢分享! 感谢感谢楼主的分享 好软件,支持一下。给楼主点个赞。 感谢楼主分享~! 必须支持一波 支持一波谢谢大佬啦 感谢分享,这个不错 高手快来改良