scrapy爬取北京公交车信息 爬取北京公交车信息(https://beijing.8684.cn):公交车名称(lineName),运行时间(time),票价信息(price),所属公司(campony),往返线路(upline和downline),并将其保存在bus_messages.csv文件中。
时间: 2023-06-27 15:01:25 浏览: 218
好的,以下是实现该需求的Scrapy爬虫代码:
```python
import scrapy
class BusSpider(scrapy.Spider):
name = 'bus'
allowed_domains = ['beijing.8684.cn']
start_urls = ['https://beijing.8684.cn/']
def parse(self, response):
bus_links = response.xpath('//div[@class="bus-layer"]/div/a')
for link in bus_links:
bus_url = link.xpath('./@href').extract_first()
yield scrapy.Request(url=response.urljoin(bus_url), callback=self.parse_bus)
def parse_bus(self, response):
line_name = response.xpath('//h1[@class="bus_i_t1"]/text()')
time = response.xpath('//div[@class="bus_i_content"]/p[1]/text()')
price = response.xpath('//div[@class="bus_i_content"]/p[2]/text()')
company = response.xpath('//div[@class="bus_i_content"]/p[3]/a/text()')
upline = response.xpath('//div[@class="bus_line_site "][1]/div[@class="bus_line_site_name"]/a/text()')
downline = response.xpath('//div[@class="bus_line_site "][2]/div[@class="bus_line_site_name"]/a/text()')
yield {
'lineName': line_name.extract_first(),
'time': time.extract_first(),
'price': price.extract_first(),
'company': company.extract_first(),
'upline': upline.extract(),
'downline': downline.extract(),
}
```
这个爬虫会首先访问起始URL,然后通过解析页面来获取所有公交车的链接。然后,对于每个公交车链接,它会进一步打开该链接并解析公交车的详细信息。最后,将所有信息保存到CSV文件中。
为了运行这个爬虫,您需要安装Scrapy并运行以下命令:
```
scrapy runspider bus_spider.py -o bus_messages.csv
```
这将运行爬虫,并将结果保存到名为“bus_messages.csv”的文件中。请注意,运行命令时应在包含爬虫代码的目录中打开命令行。
阅读全文