爬虫复习资料

更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
目标网站url地址为https://cq.fang.ke.com/loupan/page/1-50,共计50页,页面效果及核心代码如下所示。请结合所学知识,完成以下需求: (1) 爬取这50个页面的HTML代码; (2) 从爬取的HTML中,提取出楼盘名称、地址、房间大小、房价并储存到列表中;编写的Python代码如下,根据提示选择正确的代码项。 已知html代码如下所示: <ul> <li class="list"> <a href="detail?id=1" class="pic_link"> <img src="image1.jpg" alt="金洲云澜栖"/> </a> <div class="msg_box"> <div class="title"> <a href="detail?id=1">金洲云澜栖</a> <span>16.8万元</span> </div> <div class="size">一室 / 50平米</div> <div class="address">重庆,江津</div> </div> </li> <li class="list">结构同上,共20条,...</li> </ul> 参考代码: import requests from lxml import etree import pandas as pd def get_text(page): url = f'https://cq.fang.ke.com/loupan/page/{str(page)}/' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } response = requests.get(url,headers=headers) text = response.text return text def download(text): #创建xpath对象 tree = etree.HTML(text) #获取楼盘名称name的列表 name_list = tree.xpath('//li[@class="list"]//a/img/@alt') #获取楼盘地址address的列表 address_list = tree.xpath('//div[@class="address"]/text()') #获取房间面积size的列表 size_list = tree.xpath('//div[@class="size"]/text()') #获取房价price的列表 price_list = tree.xpath('//div[@class="msg_box"]//div/span/text()') #创建一个空列表result_list来接受数据 result_list = [] #通过for循环遍历出所有数据 for i in range(len(name_list)): name = name_list[i] address = address_list[i] size = size_list[i] price = price_list[i] #将遍历得到的数据以列表的形式分组添加到列表中 result_list.append([name,address,size,price]) if __name__ == '__main__': for page in range(1,51): text = get_text(page) download(text)
假设你正在开发一个爬虫程序,目标是从某新闻网站上爬取最新的头条新闻。你需要使用requests库获取网页内容并使用lxml模块(XPath)进行解析,提取出新闻的标题、发布时间和新闻链接,并将得到的信息写入news_data.xlsx文件中。目标网页的url是https://news.sina.com.cn/,请求方式为get,网页文档中展示了几条头条新闻,包含新闻的标题、发布时间和详情链接。示例如下: <html> <body> <div class="news-item"> <h2 class="news-title">2024年全球经济展望</h2> <p class="news-time">2024-11-10</p> <a href="https://example.com/news1" class="news-link">阅读全文</a> </div> <div class="news-item"> <h2 class="news-title">科技公司引领创新潮流</h2> <p class="news-time">2024-11-09</p> <a href="https://example.com/news2" class="news-link">阅读全文</a> </div> <div class="news-item"> <h2 class="news-title">新冠疫苗研究最新进展</h2> <p class="news-time">2024-11-08</p> <a href="https://example.com/news3" class="news-link">阅读全文</a> </div> </body> </html> 参考代码: import requests from lxml import etree import pandas as pd #定义抓取静态页面函数 def get_text(url): headers = { 'user-agent': 'Mozilla/5.0...' } response = requests.get(url,headers=headers) return response.text #定义html解析函数 def parse_html(text): #定义一个列表保存解析后的数据 item = [] #创建ElementTree对象 tree = etree.HTML(text) #进行xpath解析 title_list = tree.xpath('//h2[@class="news-title"]/text()') time_list = tree.xpath('//p[@class="news-time"]/text()') link_list = tree.xpath('//a/@href') for i in range(len(title_list)): title = title_list[i] time = time_list[i] link = link_list[i] # 把解析到的数据添加到列表中 item.append({ '新闻标题':title, '发布时间':time, '新闻链接':link }) return item #定义保存数据的函数 def download_to_excel(filename,item): #创建DataFrame对象 df = pd.DataFrame(item) #把数据写入excel df.to_excel(filename,index=False) #定义流程控制函数 def get_news(): #定义url url = 'https://news.sina.com.cn/' text = get_text(url) item = parse_html(text) download_to_excel('news_data.xlsx',item)