求助php无法抓取网页,问了几个人都没解决
url必须为以下代码中的url,经测试,在抓取时,如果q后面的参数带空格,他会自动把"&"转换成"&",从而造成数据无法抓取,在网页中直接输入网址是可以得到内容的,求解决方法
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz claiborne&page=1&showMode=list";echo Post($url);function Post($url, $post = null)//请求的网页{$context = array(); if (is_array($post)) { ksort($post); $context['http'] = array ( 'timeout'=>60, 'method' => 'POST', 'header'=>">Accept-language: en/r/n", 'content' => http_build_query($post, '', '&'), ); }return file_get_contents($url, false, stream_context_create($context));}
错误提示:
Warning: file_get_contents(http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz claiborne&page=1&showMode=list) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.1 505 HTTP Version Not Supported in F:\wwwroot\getTaobao\test.php on line 25
回复讨论(解决方案)
你可以先看看html 字符实体
file_get_contents ? 将整个文件读入一个字符串
说明
string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )
和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents()将返回 FALSE。
file_get_contents()函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。
Note: 如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。
另外
'header'=>" >Accept-language: en /r/n"
红字部分是什么?
>是多余的,/r/n应为\r\n
header不正确的话,服务器端返回错误(505)就是正常的了
file_get_contents ? 将整个文件读入一个字符串
说明
string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )
和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents()将返回 FALSE。
file_get_contents()函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。
Note: 如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。
另外
'header'=>" >Accept-language: en /r/n"
红字部分是什么?
>是多余的,/r/n应为\r\n
header不正确的话,服务器端返回错误(505)就是正常的了
通过url编码后一样无法获得数据 ,代码如下
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=lizclaiborne&page=1&showMode=list";echo Post(urlencode($url));function Post($url, $post = null)//请求的网页{$context = array(); if (is_array($post)) { ksort($post); $context['http'] = array ( 'timeout'=>60, 'method' => 'POST', 'header'=>"Accept-language: en\r\n", 'content' => http_build_query($post, '', '&'), ); }return file_get_contents($url, false, stream_context_create($context));}
实际的错误是:HTTP/1.1 505 HTTP Version Not Supported
file_get_contents(str_replace(' ', '%20', $url));
现在可以了,刚才可能是他的服务器出现了问题
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=lizclaiborne&page=1&showMode=list";echo file_get_contents($url);
{"name":"团购价美国真品liz claiborne丽资克莱本女款中款钱包 liz钱包" ,"img":"http://q.i02.wimg.taobao.com/bao/uploaded/i1/T18ZyyXfXgXXXc8SLa_122312.jpg_90x90.jpg","img2":"http://q.i04.wimg.taobao.com/bao/uploaded/i1/T18ZyyXfXgXXXc8SLa_122312.jpg","iswebp":"","url":"http://a.m.taobao.com/i2431550873.htm?rn=bwHGEi1-ZClPeKBbGc1lfJhm45-D1gLR8O-pug7&sid=8b9c27255c655b1e","previewUrl":"http://a.m.taobao.com/ajax/pre_view.do?itemId=2431550873&sid=8b9c27255c655b1e","favoriteUrl":"http://fav.m.taobao.com/favorite/to_collection.htm?itemNumId=2431550873&sid=8b9c27255c655b1e",
"icon":["0" ],
"price":"39.00","originalPrice":"39.00","freight":"10","area":"天津","act":"月售1","itemNumId":"2431550873","nick":"金缕衣_2007",
..........
嗯,粘错了数据
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz claiborne&page=1&showMode=list";
这个不行 HTTP/1.1 505 HTTP Version Not Supported
这样都行
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz +claiborne&page=1&showMode=list";
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz %20claiborne&page=1&showMode=list";
他的服务器不知做了什么设置,不接受未经 url 编码的数据
嗯,粘错了数据
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz claiborne&page=1&showMode=list";
这个不行 HTTP/1.1 505 HTTP Version Not Supported
这样都行
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz +claiborne&page=1&showMode=list";
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz %20claiborne&page=1&showMode=list";
他的服务器不知做了什么设置,不接受未经 url 编码的数据
服务器可以接受“未经 url 编码的数据”吗?
怎么我理解的是服务器只能接受经过url编码的数据呢,
如果我们直接把带空格的地址在浏览器打开,
那浏览器已经自动把url编码了,
所以打开正常,
但是php并不是浏览器,
所以它不会自动做这些事情,
需要手动进行编码,
难道不是这样的吗?
嗯,粘错了数据
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz claiborne&page=1&showMode=list";
这个不行 HTTP/1.1 505 HTTP Version Not Supported
这样都行
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz +claiborne&page=1&showMode=list";
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz %20claiborne&page=1&showMode=list";
他的服务器不知做了什么设置,不接受未经 url 编码的数据
服务器可以接受“未经 url 编码的数据”吗?
怎么我理解的是服务器只能接受经过url编码的数据呢,
如果我们直接把带空格的地址在浏览器打开,
那浏览器已经自动把url编码了,
所以打开正常,
但是php并不是浏览器,
所以它不会自动做这些事情,
需要手动进行编码,
难道不是这样的吗?
空格符(\x20)是url合法字符,怎么处理视乎服务器
你做过http socket的话就知道了,header发送带空格的url一般也是可接受的
嗯,粘错了数据
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz claiborne&page=1&showMode=list";
这个不行 HTTP/1.1 505 HTTP Version Not Supported
这样都行
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz +claiborne&page=1&showMode=list";
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz %20claiborne&page=1&showMode=list";
他的服务器不知做了什么设置,不接受未经 url 编码的数据
服务器可以接受“未经 url 编码的数据”吗?
怎么我理解的是服务器只能接受经过url编码的数据呢,
如果我们直接把带空格的地址在浏览器打开,
那浏览器已经自动把url编码了,
所以打开正常,
但是php并不是浏览器,
所以它不会自动做这些事情,
需要手动进行编码,
难道不是这样的吗?
空格符(\x20)是url合法字符,怎么处理视乎服务器
你做过http socket的话就知道了,header发送带空格的url一般也是可接受的
那就是说查询字符串不管是什么字符,
服务器都可以全部原样接收到是吗?
正确的写法是:
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=". urlencode('liz claiborne') . "&page=1&showMode=list";
嗯,粘错了数据
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz claiborne&page=1&showMode=list";
这个不行 HTTP/1.1 505 HTTP Version Not Supported
这样都行
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz +claiborne&page=1&showMode=list";
$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz %20claiborne&page=1&showMode=list";
他的服务器不知做了什么设置,不接受未经 url 编码的数据
服务器可以接受“未经 url 编码的数据”吗?
怎么我理解的是服务器只能接受经过url编码的数据呢,
如果我们直接把带空格的地址在浏览器打开,
那浏览器已经自动把url编码了,
所以打开正常,
但是php并不是浏览器,
所以它不会自动做这些事情,
需要手动进行编码,
难道不是这样的吗?
空格符(\x20)是url合法字符,怎么处理视乎服务器
你做过http socket的话就知道了,header发送带空格的url一般也是可接受的
那就是说查询字符串不管是什么字符,
服务器都可以全部原样接收到是吗?
换行符和/符,你觉得如何,当然不是任何字符
这个问题我以前遇到过,把“&”单独拿出来就可以比方说http://www.123.com?id=123&num=123;
写成$url='http://www.123.com?id=123'.“&”.'num=123';这样编译器会把它当字符串算不给转换。
转码即可 urlencode()

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Pembalakan PHP adalah penting untuk memantau dan menyahpepijat aplikasi web, serta menangkap peristiwa kritikal, kesilapan, dan tingkah laku runtime. Ia memberikan pandangan yang berharga dalam prestasi sistem, membantu mengenal pasti isu -isu, dan menyokong penyelesaian masalah yang lebih cepat

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

Alipay Php ...
