I have the following for loop:
for titles in titles:
title = titles.xpath("a/text()").extract()
link = titles.xpath("a/@href").extract()
print(title, link)
How can I dump the title and link into a formmated .csv file?
I have the following for loop:
for titles in titles:
title = titles.xpath("a/text()").extract()
link = titles.xpath("a/@href").extract()
print(title, link)
How can I dump the title and link into a formmated .csv file?
You should use the python CSV module. Look here for more information: Writing List of Strings to Excel CSV File in Python.
Here is an example for your problem:
import csv
results = []
# your code... also add this to your for loop.
results.append([title, link])
csv_file = open("csv_file.csv",'wb')
wr = csv.writer(csv_file)
for row in results:
wr.writerow(row)
File "/Users/user/PycharmProjects/scrapy_tests/ttest/spiders/test.py", line 28, in parse wr.writerow(row) TypeError: a bytes-like object is required, not 'str'wb' to 'w', can't see why you opened in binary mode.Something like this (documentation):
...
doc_path = "path/to/doc.csv" # must exist, first folder on the place
# where you are running the script!
with open(doc_path, 'a') as doc:
for entry in titles:
title = entry.xpath("a/text()").extract()
link = entry.xpath("a/@href").extract()
print(title, link)
doc.write(str(title)+','+str(link)+'\n')
pandas.DataFrame.to_csv, but even people using pandas use traditional write (example).Use a csv writer.
Basic usage:
import csv
with open('file.csv') as f:
writer = csv.writer(f)
writer.writerow(["title", "link"])
result = []
for titles in titles:
title = titles.xpath("a/text()").extract()
link = titles.xpath("a/@href").extract()
print(title, link)
result += [title + ',' + link + '\n']
with open("result.csv" "w+") as f:
f.writelines(result)