用php爬取网页数据

首先你得知道抓取网页数据的原理,其实你只需要一句话就能把别人的网页全拿过来

file_get_contents("http://www.baidu.com");//注意url一定要完整

但是怎样从这个网页中得到你想得到的某部分data呢?

其实道理很简单,就是把这个结果当做是一个很长的字符串,然后从字符串中反复的过滤和截取直到得到自己想要的结果集

所以这件事的核心其实是正则表达式。

做这件事你要对比着要抓取网页的html代码

比如你想得到table中的内容可以用$preg1 = '/<table[^>]*>(.*?) <\/table>/si'这句匹配正则,就可以把所有的table中的所有内容拿出来

匹配函数用preg_match_all ( $preg1, $res1, $res2 );

其中$preg1是匹配表达式, $res1是源, $res2是结果容器。

然后用同样的方法匹配出<th>中的内容

再匹配出<td>中的内容,如果是多条数据,这时你应该得到一个多维数组,

这样核心的处理就完了


注意,不要以为这样很省事不要自己做数据,实际操作起来时相当烦琐了,如果

原网页的数据时规则的那还好办,可如果他都不规则,光是各种匹配数据就能把你

整得晕头转向,而且如果原网页稍作变化(结构的),你的程序必须也得跟着变。





































以下为两个使用 Python 批量爬取网页数据的代码示例: ### 批量爬取股票数据 ```python import requests from urllib.parse import urlencode def spider(page): ''' :param page: 页数 :return: ''' start_url = 'https://www.gpdatacat.com/index.php?' param = { "r": "site/stock", "page": page, "per-page": 240 } url = start_url + urlencode(param) headers = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36" } try: response = requests.get(url, headers=headers) if response.status_code == 200: print(response.text) else: print(f'status code: {response.status_code}') except Exception as error: print(error) if __name__ == '__main__': # 设置采集的页数 page = 1 spider(page) ``` 此代码可批量爬取股票数据,借助`requests`库发送 HTTP 请求,`urllib.parse.urlencode`用于对 URL 参数进行编码,通过设置不同的页码`page`实现批量爬取[^3]。 ### 批量爬取网页图片 ```python import requests import re def Get_image_url(headers, key): print("正在获取图片下载链接......") url = 'https://image.baidu.com/search/index?tn=baiduimage&ie=utf-8&word={}'.format('%s' % key) request = requests.get(url, headers=headers, timeout=10) # timeout实现网页未返回值的情况 # 获取网页的代码 image_urls = re.findall('"objURL":"(.*?)",', request.text, re.S) # 获取图片的下载链接,列表形式 if not image_urls: print("Error:图片下载链接获取失败!") else: return image_urls ``` 该代码可批量爬取网页图片,利用`requests`库发送请求,`re`库进行正则表达式匹配,以获取图片的下载链接,通过输入不同的搜索关键词`key`实现批量爬取[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值